let a = 3; //a=10
function func(a) {
a = 10;
console.log(a);
}
func(a);
console.log(a)
//10
//3
解析:1、注意函数作用域,内部有个变量a = 10
2、外部a没有更改过
let obj = { a: 1 };
function set(obj) {
obj.a = 2;
obj = { a: 2, c: 3 };
}
set(obj);
console.log(obj);
//{a:2}
解析:1、函数作用域中:变量obj指向外部obj{a:1},更改它为{a:2},然后变量obj指向了另一个对象
2、打印时,外部obj指向不变{a:2} 注意指向(即引用)问题
function bar() {
console.log(project);
}
function foo() {
var project = 'foo';
bar();
}
var project = 'global';
foo();
//global
//谁来调用我,我就代表谁,没人调用我,我就是window
解析:bar()调用时,前面没有对象,故而指向window