关于前端:JavaScript变量提升

舒适提醒:严格模式不容许应用未声明的变量。

var定义的变量会先定义,全副定义结束再赋值。

比方咱们执行上面的语句:

console.log(temp);

你会看见如下报错:

VM47:1 Uncaught ReferenceError: temp is not defined
    at <anonymous>:1:13

咱们把代码改一下:

console.log(temp);
var temp='我爱你,中国!';

能够看见打印了undefined,没有报错,也没有打印'我爱你,中国!'

其实批改后的代码相当于:

var temp;
console.log(temp);
temp='我爱你,中国!';

再看个例子:

console.log(temp);
function temp(){}
var temp='我爱你,中国!';

看看对应后果:

ƒ temp(){}

这阐明,和var一样,function定义的变量也会进行晋升,都将被提到以后作用域的最顶部(然而不会初始化);同时,函数申明的优先级大于变量申明的优先级(function>var)。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理