这是个函数表达式,这个 a 就是函数名称,它的特点是作为函数体(作用域内)的本地变量,不能被修改,也不能被外部访问。
zaul
2019-04-18 16:59:28 +08:00
花里胡哨,捉起来霸死
jin5354
2019-04-18 17:06:39 +08:00
还真是知识盲点 具名函数表达式中函数 name 是不可被修改的,函数声明中函数 name 是可被修改的 花里胡哨,下次我还忘
1KN6sAqR0a57no6s
2019-04-18 20:12:12 +08:00
```js function a() { console.log(a); // [Function: a] a = 100; console.log(a); // 100 } a(); console.log(a); // 100
function b() { "use strict"; console.log(b); // [Function: b] b = 100; console.log(b); // 100 } b(); console.log(b); // 100
(function c() { console.log(c); // [Function: c] c = 100; console.log(c); // [Function: c] })(); console.log(c); // ReferenceError: c is not defined
"use strict"; (function d() { console.log(d); // TypeError: Assignment to constant variable. d = 100; console.log(d); })(); console.log(d); // ReferenceError: d is not defined ```
1KN6sAqR0a57no6s
2019-04-18 20:16:56 +08:00
```js var a = 100; var b = 999;
(function a() { console.log(b); // 999 根据词法环境规则,可以拿到外层的 b 的值