当前位置:网站首页>40.js--同名标识符提升问题
40.js--同名标识符提升问题
2022-07-13 17:36:00 【爱喝珍珠奶茶】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
程序案例1;
var a = 10
function fn() {
console.log(a)
a = 40
var a = 20/
console.log(a)
}
console.log(a)
fn()
console.log(a)运行结果:

注释与总结:
function fn() {
//隐式操作:把var 修饰的变量名提前声明
console.log(a)//声明了却没有赋值的变量undefined
a = 40//给隐式声明的变量赋初始化值
var a = 20//更新a的值 40==>20
console.log(a)//20
}
总结:
每一个作用域在运行时,js引擎会先把作用域内部的关键字隐式提前扫描
程序案例2;函数也会隐式提升: 变量值提升声明,函数提升的是整个函数体
fm()
fn()
function fn () {
console.log(666)
}运行结果:

1.隐式提升函数
程序案例1;
//1.隐式提升函数
function fn () {
console.log(666)
}
// 2.正常运行代码
fn()运行结果:

1. 同名标识符提升问题:变量函数同名时 变量然后函数
程序案例1;
console.log(a)
var a=20
function a () {
console.log(100)
}
console.log(a)
运行结果:

程序注释:
1.
var a
function a () {
console.log(100)
}
console.log(a)
a=20
console.log(a)
2.同名标识符提升问题:变量变量同名时()
程序案例1;
console.log(a)
var a=10;
console.log(a)
var a=20;
console.log(a)运行结果:

程序注释:
1.var a;var a;
2.console.log(a)//undef
3.a=10;
4.console.log(a)//10
a=20;
console.log(a)//20
3.同名标识符提升问题:函数和函数同名时
程序案例1;
function fn () {
console.log(111)
}
function fn () {
console.log(2222)
}
fn()
运行结果:

4.什么是形实函运(口诀)(个人总结)?
这不是官方的说法,面试的时候不能这样说
它是指,在一个作用域的代码运行的时候 js引擎会执行代码的过程有一个执行流程
这个流程就是:
1.先隐式提升当前作用域内部的所有形参变量和局部变量 (只是声明提升,不提升赋值)
2.再把实参赋值给形参变量
3.然后执行函数的隐式提前声明
4.再按照代码顺序运行代码
案例:
var a=20
function fn(a){
console.log(a,1)
a=90
console.log(a,2)
var a=100
console.log(a,3)
function a () {
console.log(6666)
}
console.log(a,4)
}
fn(a)运行结果:

程序注释:
var a;
a=20
function a () {
console.log(6666)
}
//打印函数
a=90
console.log(a,2)//打印90
a=100
console.log(a,3)//100
console.log(a,4) //100
对象内部的方法不会隐式提升
边栏推荐
- Micro service mode: sidecar
- 2022 GopherChina 出品人及演讲内容陆续揭晓···
- 基于 conda 的在 Win10 上从零开始搞一个 Tensorflow-gpu (2.6.0) 环境的操作记录 (2022.07)
- Jmeter相关知识整理
- 解决ssm項目上傳圖片後無法及時回顯
- Solve the problem of unable to load authentication plugin 'caching' when idea2020 connects to MySQL 8_ sha2_ Password 'exception
- Teacher Wan Jianfeng dry goods sharing July 13, 2022
- JS预编译
- Records of several classical power spectral density estimation methods (from the perspective of filtering)
- 扩展知识——JS的劫持技术
猜你喜欢

Implementation of drop-down box function in SSM project

基于 conda 的在 Win10 上从零开始搞一个 Tensorflow-gpu (2.6.0) 环境的操作记录 (2022.07)

蓝桥杯单片机第13届省赛题

快手实时数仓保障体系研发实践

Lu te software Qi Jun: cloud native helps SaaS business tenants to isolate efficiently
![Senior explanation - the difference between FPGA and MCU [basic concept of Bi design]](/img/95/1770c5dd38f3c960581bc1859527a4.png)
Senior explanation - the difference between FPGA and MCU [basic concept of Bi design]

Flink CDC + OceanBase 全增量一体化数据集成方案

At 19:00 p.m. on Thursday, the third live broadcast of knowledge empowerment - control panel function realization of openharmony smart home project
![[hero planet July training leetcode problem solving daily] day 13 two-way linked list](/img/88/ffd37493f0adea18ee5b988e5cef9b.png)
[hero planet July training leetcode problem solving daily] day 13 two-way linked list

渗透测试之靶场安装与攻击机配置
随机推荐
自适应批作业调度器:为 Flink 批作业自动推导并行度
Résoudre le problème de l'échec de l'écho en temps opportun après le téléchargement de l'image du projet SSM
Flink CDC 在大健云仓的实践
Mysql-MVCC
A grayscale interface migration scheme
Micro service mode: sidecar
油猴脚本更改tw樣式
[untitled]
JS字符串内置功能
[explore why string class is an immutable type: String class imitation]
Changement de style TW du script singe huileux
一文理解分布式开发中的服务治理
The parameters trained by tensorflow are transformed into those under Caffe framework Caffemodel model
ES5中数组对象有哪些方法和ES6新增了哪些方法
藍橋杯單片機第13届省賽題
正则表达式
C语言:结构体中链表的添加与删除
Flink CDC MongoDB Connector 的实现原理和使用实践
ES6新增的箭头函数
数据库进阶