一、markdown
var a = 10,
b = 11,
c = 12;
function test(a) {
a = 1;
var b = 2;
c = 3;
}
test(10);
console.log(a, b, c);
複製代碼
二、spa
var a = 4;
function b(x, y, a) {
console.log(a);
arguments[2] = 10;
console.log(a);
}
a = b(1, 2, 3);
console.log(a);
複製代碼
三、咱們須要理解映射機制在什麼階段創建(只有在形參賦值階段創建)3d
function fn(x, y) {
/!*
* EC(FN)
* 做用域鏈:<EC(FN),EC(G)>
* 初始ARGUMENTS: {0:10,length:1}
* 形參賦值:x=10 y=undefined
* 「映射關係」 x->arguments[0]
* 變量提高:--
*!/
let arg = arguments;
x = 100;
console.log(arg[0]); //=>100
arg[1] = 200;
console.log(y); //=>undefined
}
fn(10);
複製代碼
四、code
var a = 9;
function fn() {
a = 0;
return function (b) {
return b + a++;
}
}
var f = fn();
console.log(f(5));
console.log(fn()(5));
console.log(f(5));
console.log(a);
複製代碼
五、orm
var test = (function (i) {
return function () {
alert(i *= 2);
}
})(2);
test(5);
複製代碼
六、作用域
var x = 4;
function func() {
return function(y) {
console.log(y + (--x));
}
}
var f = func(5);
f(6);
func(7)(8);
f(9);
console.log(x);
複製代碼
七、it
var x = 5,
y = 6;
function func() {
x += y;
func = function (y) {
console.log(y + (--x));
};
console.log(x, y);
}
func(4);
func(3);
console.log(x, y);
複製代碼
八、io
function fun(n, o) {
console.log(o);
return {
fun: function (m) {
return fun(m, n);
}
};
}
var c = fun(0).fun(1);
c.fun(2);
c.fun(3);
複製代碼