lax*_*089 0 javascript var iife
最近被问到以下JavaScript代码会导致什么,正确的答案让我困惑:
(function () {
var a = b = 5;
})();
console.log(b);
Run Code Online (Sandbox Code Playgroud)
我原本以为这会打印undefined但实际打印5.
根据我的理解,IIFE(立即调用的函数表达式)中定义的所有变量在其范围之外不应该是可见的.这些变量声明的排序b在其范围之外a是如何显示的,而在其范围之外是不可见的?
这个:
Run Code Online (Sandbox Code Playgroud)var a = b = 5;
相当于:
b = 5;
var a = b;
Run Code Online (Sandbox Code Playgroud)
不要
var b = 5;
var a = b;
Run Code Online (Sandbox Code Playgroud)
它创建b为全局,然后分配bto 的值a.
在严格模式下也是禁止的.始终使用严格模式!
"use strict";
(function () {
var a = b = 5;
})();
console.log(b);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |