javascripts代码中的不同行为

时间:2015-05-11 06:46:26

标签: javascript function

javascripts代码中的不同行为

首先:

(function(){
   c();
   var c=function (){
      console.log("C");
   }
})();

Error : Uncaught TypeError: c is not a function

VS

(function(){
   c();
   function c(){
      console.log("C");
   }
})();

C

第二名:

var a;
console.log(a);
a=10;

10

VS

(function(){
   var a; 
   console.log(a);
   a=10;
})()

undefined

请帮助我理解这种行为。 谢谢!

1 个答案:

答案 0 :(得分:0)

第一

(function(){c();var c=function (){console.log("C");}})()

c尚未定义,所以这是一个错误。

(function(){c();function c(){console.log("C");}})()

function something() {}始终为called at compile time,因此此处定义了c

第二

var a;console.log(a);a=10;

赋值返回赋值的值,因此它是10。这也是你可以写a = b = 4的原因。

(function(){var a; console.log(a);a=10;})()

该函数不返回(没有return)任何内容,因此它是undefined

如果我们在这里谈论console.log结果,那么它们都是undefined,因为a尚未定义。