斗战胜魔 发表于 2023-7-15 15:49:22

JS中var let声明范围区别详解

var声明提升

console.log(name)//土豆
var name = '土豆';使用var声明的变量会自动提升到函数作用域的顶部
function foo(){
    console.log(name);
    var name = "土豆";
}
foo()//undefined
//等价于
function foo(){
    var name;
    console.log(name);
    name = "土豆";
}
foo(); //undefinedconsole.log(name)//ReferenceError name没有被定义
let name ="土豆";而使用let定义的name不会被提升,报出ReferenceError的错误;

var可以重复声明同一个变量

var name = "番茄";
var name = "西瓜";
var name = "土豆";
console.log(name);//土豆而使用let重复声明同一个变量会报错。
var name = "土豆";
let name = "土豆";
console.log(name);//'name' has already been declaredlet name = "土豆";
var name = "土豆";
console.log(name);//Cannot redeclare block-scoped variable 'name'.
var全局声明

var name = "土豆";
console.log(window.name);//土豆
let age = "24";
console.log(window.age);//undefined使用var定义的变量会被挂载到window上,成为window对象的属性,而使用let不会。

作用域

if(true){
    var name = "土豆";
    console.log(name);
}
console.log(name);
//土豆
//土豆
if(true){
    let age = 24;
    console.log(age);
}
console.log(age);
//24
//undefined使用var声明的范围是函数作用域,使用let声明的范围是块作用域。
以上就是JS中var let声明范围区别详解的详细内容,更多关于JS var let声明范围区别的资料请关注脚本之家其它相关文章!


来源:https://www.jb51.net/javascript/291966iw4.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: JS中var let声明范围区别详解