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语法的一些不合理、不严谨之处
相关推荐
Crazyshark 2020-09-15
ZGCdemo 2020-08-16
lanzhusiyu 2020-07-19
littleFatty 2020-08-16
Aveiox 2020-06-23
archimedes 2020-05-27
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