JavaScript中的变量提升和严格模式
1.什么是变量提升
所谓的变量提升指的是:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体(作用域)的最顶部。
//先声明后使用 var x; console.log(x);// undefined //先试用后声明 console.log(y);// undefined var y; //上面的式子可以写成下面的样子 变量提升:把x,y提升到顶部 var x; var y; console.log(x); console.log(y);
①变量的使用有两种形式,先声明再使用或者先使用后声明;
②无论是哪一种形式都不影响变量的使用,这是因为有变量提升的存在,每一个你定义的变量都会被提升到顶部,也就是函数最开始的部分,这就变成了你在使用变量时其实都已经声明变量了。
关于JavaScript变量提升,需要注意的是:只有声明的变量会提升,初始化的不会。
console.log(c);//undefined var c = 111; //初始化的不会提升 /* console.log(c);//underfined var c;//声明的会提升 c = 1; */
上面的c打印结果为undefined,这是因为提升的只有声明变量var c,而初始化的c=1没有提升而在使用之后。
为了避免上面出现的变量提升的问题,通常我们在每个作用域开始前声明我们要使用的变量。
2.严格模式
严格模式的写法就是在代码编写之前加上"use strict",严格模式要求你不能使用未声明的变量,否则会报错。
"use strict"; //表示严格模式 aa =123; console.log(a);//aa is not defined //在严格模式下,因为aa未被声明就被使用或者初始化则会报错 var n = 111; console.log(n);//111
使用严格模式消除Javascript语法的一些不合理、不严谨之处
相关推荐
xuebingnan 2020-11-05
Crazyshark 2020-09-15
ZGCdemo 2020-08-16
lanzhusiyu 2020-07-19
littleFatty 2020-08-16
Aveiox 2020-06-23
archimedes 2020-05-27
softwear 2020-08-21
northwindx 2020-05-31
zrtlin 2020-11-09
wikiwater 2020-10-27
heheeheh 2020-10-19
jczwilliam 2020-08-16
idning 2020-08-03
jinxiutong 2020-07-26
Skyline 2020-07-04