目录
- var声明提升
- var可以重复声明同一个变量
- var全局声明
- 作用域
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(); //undefined
console.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 declared
let 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声明范围区别的资料请关注其它相关文章!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)