JavaScript—变量提升
来源:互联网 发布:烟灶套装 知乎 编辑:程序博客网 时间:2024/06/01 10:29
我们先来看一个例子:
var num = 10;fun();function fun(){ console.log(num); //输出undefined var num = 20; console.log(num); //输出20}
这里就有一个疑问了:为什么是undefined而不是10呢?
其实在真实的解析过程是这样的:
function fun(){ var num //先声明变量 console.log(num); num= 20; //到这里再赋值 console.log(num);}var num = 10;fun();
这就是JavaScript的变量提升:JavaScript的函数内定义的局部变量,不管在哪一行声明赋值,解析的时候都会将函数声明强行提升到函数的开头部分,但变量的赋值还是在我们写代码时变量所在行数进行赋值。
赋值并没有被提升,只是声明被提升了。
在说说例子:因为有了局部变量num的声明,所以全局变量num会被忽略,而局部变量的声明被提升到了函数的开头,没有赋值,所以console.log(num)输出undefined。
如果函数和变量同名的时候是怎么提升的呢?来看一下
console.log(showNum); //输出showNum函数var showNum = 10;function showNum(){}
这个解析过程是这样的:
function showNum(){}var showNum //被忽略掉了console.log(showNum);showNum = 10;
这是因为在拥有同一个标识符的情况下,变量声明和函数都会被提升;函数声明会覆盖变量声明,但是不会覆盖变量赋值。
来直接上代码,更直观点,稍微改一下例子的代码(顺序调换)。
var showNum = 10;console.log(showNum); //显示变量10function showNum(){}
看到这里我就不写解析过程了,变量声明的同时初始化或赋值那么变量优先级高于函数,就不会再被忽略掉了。
当然,这里只是帮助理解的例子,在实际开发中绝对绝对绝对不可以让变量和函数同名哦。
0 0
- JavaScript—变量提升
- JavaScript—变量提升、函数提升
- JavaScript——变量提升
- javascript变量声明提升
- javascript 变量/函数 提升
- javascript变量声明提升
- JavaScript变量提升示例
- JavaScript变量提升-Hoisting
- JavaScript变量声明提升
- Javascript变量提升解释
- JavaScript 变量声明提升
- Javascript变量提升(Hoisting)
- javascript变量声明提升
- JavaScript之变量提升
- javaScript的变量提升
- javascript之变量提升
- Javascript变量提升(Hoisting)
- JavaScript 变量提升
- 获取 url 参数
- 浅谈iOS中MVVM的架构设计与团队协作
- Kubernetes计算资源管理--requests和limits
- 算法随练(斐波那契数列)
- IOS开发之关键字synchronized
- JavaScript—变量提升
- MVVM 介绍
- HDU
- 《webrtc权威指南》 资源
- 【SSH网上商城项目实战12】添加和更新商品功能的实现
- 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
- 关于Git的几个使用技巧
- 有关opencv的学习(13)—使用固定阈值处理图像
- Ubuntu14.04下深度学习框架Caffe的搭建