ECMAScript 6介绍了该let声明.我听说它被描述为"本地"变量,但我仍然不太确定它与var关键字的行为有何不同.
有什么区别?何时应该let使用var?
所以我刚开始学习 javascript,我现在在函数模块中,我正在玩它,突然我遇到了一个疑问:
为什么是这样:
if(x==true){
return 1;
}
Run Code Online (Sandbox Code Playgroud)
与此不同:
if(x){
return 1;
}
Run Code Online (Sandbox Code Playgroud)
?
你看,我有这个代码:
function isAdult(age){
if(age >= 18){
return true;
}
return false;
}
function nameAndAge(string, boolean){
if(boolean == true){
var my_string = string + " is adult";
return my_string
}
var my_string = string + " is under age";
return my_string
}
var talisa_age = 22;
var talisa_name = "Talisa Maegyr";
var status = isAdult(talisa_age);
var str = nameAndAge(talisa_name,status);
console.log(str)
Run Code Online (Sandbox Code Playgroud)
无论“talisa_age”值如何,我都会得到以下输出:
"Talisa Maegyr is under age"
Run Code Online (Sandbox Code Playgroud)
但是,如果我将 nameAndAge …
让我们以以下代码为例:
const constVar = 'some string';
let letVar = 'some string';
var varVar = 'some string';
(function() {
console.log(window.constVar); // prints undefined
console.log(window.letVar); // prints undefined
console.log(window.varVar); // prints 'some string'
})();Run Code Online (Sandbox Code Playgroud)
根据constmdn声明的描述:
该声明创建一个常量,其范围可以在声明它的块的全局范围内或局部范围内。
我let以同样的方式假设作品。
在这种情况下,“块”包含在全局范围内。我想这里的重要区别是,尽管const constVar“全局”可访问,但仍未在window对象上定义它。
这使我认为全局范围和window对象是完全不同的。最终导致2个问题。
为什么使用var关键字声明的变量定义在上,window而用const而声明的变量let却未定义在window?
“全局范围”和window浏览器提供给我们的对象之间有什么区别?