(function(){
var a = b =1;
})()
console.log(b)
答案:1。定义变量如果不使用 var
则变量为为全局作用域。当然严格模式是禁止这样做的。
var a =20;
function t1(){
console.log(a)
}
(function t2() {
var a = 10;
t1()
})()
var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f();
}
checkscope();
var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f;
}
checkscope()();
答案:20, "local scope" , "local scope"。JS 遵循词法作用域原则,其中后两题来源于《JavaScript权威指南》。
var a = 20;
var obj = {
a: 40,
test() {
var a = 10;
console.log(this.a)
}
}
// Q1
obj.test();
// Q2
var t = obj.test;
t();
// Q3
(obj.test)();
// Q4
(obj.test, obj.test)()
答案:40,20,40,20。非箭头函数下的 this 指向运行时所在作用域。Q4 中逗号操作符会从左到右计算它的操作数,返回最后一个操作数的值。
原文发表于我的 GitHub 博客
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。