w3schools:Scope determines the accessibility (visibility) of variables
a=20
var a = 20
function test() {
console.log(a);//20
};
test();
console.log(a);// 20
var a = 10;
test()
中宣告var a = 10;
,只有在该范围内可以取得 var a = 20
function test() {
var a = 10;
console.log(a);//10
};
test();
console.log(a);// 20
console.log(a)
就没有 function test() {
var a = 10;
console.log(a);//10
};
test();
console.log(a);// a is not defined
ES6以前,如使用 var 宣告,作用域是以 function 为基准
ES6开始,只要有 let 和 const 宣告的block({ }
)就是一个新的作用域 => Block Scope
//var的作用域是整个function,所以他可以取得b = 10
function test() {
var a = 60;
if (a === 60) {
var b = 10
}
console.log(b); //10
}
test()
//在if中,宣告方式改为let,就无法印出b,因为他的作用域就只有在if这个block中
function test() {
var a = 60;
if (a === 60) {
let b = 10
}
console.log(b); //ReferenceError: b is not defined
}
test()
inner()
中,没有宣告a,所以它会往上一层找
var a = 'global'
function test() {
var a = 'test scope a';
var b = 'test scope b';
console.log(a, b); //JS 19行
function inner() {
var b = 'inner scope b';
console.log(a, b); //JS 22行
}
inner();
}
test();
console.log(a); //JS 29行
参考资料:
lidemy:进阶 JavaScript:那些你一直搞不懂的地方
Scope 作用域
Day 6:汤姆克鲁斯与唐家霸王枪——变数的作用域(Scope)
>>: 黑死病消灭欧洲一半人口,对14世纪的社会造成什麽影响? #文章心得 #接续前篇
对於习惯使用windows在开发大部分工作的开发者来说,如果想要同时开发适合在Linux-based...
有看月球转运站的夥伴应该有发现, 随着开发的进展,程序码已经变得有点不好看了。 今天就来对这段程序码...
初始化专案 ws 在使用上和 socket.io 其实颇为类似,因此预计实作上会分两个阶段,第一阶段...
程序码端基础建设 Zenject简述 UI的版面配置暂时来说是足够的,接下来要开始将实际的功能逐一加...
今天介绍的内容为如何固定位置生成以及随机位置生成敌人。 ...