IIFE和全球范围的JavaScript

B.D*_*.D. 2 javascript global-variables iife

为什么下面的代码结果的记录b,同时a还是undefined

(function(){ var a=b=5; })();
console.log('b:'+b);
console.log('a:'+a);
Run Code Online (Sandbox Code Playgroud)

zer*_*kms 5

因为var a=b=5;语句只定义局部a变量,实际上是解释为

var a = (b=5);
Run Code Online (Sandbox Code Playgroud)

等于

b = 5;
var a = 5;
Run Code Online (Sandbox Code Playgroud)

它分配5给全局b变量并定义局部a变量.

定义2个局部变量而不重复值的正确方法是

var b = 5, a = b;
Run Code Online (Sandbox Code Playgroud)