2 huanleforever huanleforever 于 2014.04.03 16:38 提问

javascript 函数声明在if语句里面
var x = 1;
if(function f(){},x=f){
 }
 console.log(x);

为什么在执行if语句的时候,会报f is not defined的错误.

2个回答

franzhong
franzhong   2014.04.03 17:20
已采纳

[觉得对弱类型语言还钻了下牛角尖]
条件判断里不应该进行有作用域的定义,
发现只能定义全局变量
if(i=3,x=i) //good
if(var i=3,x=i) //bad
你的例子,我给你改一下就正确了,只是发现一点规律,具体原因,我不确定

var x = 1;
if(gF = function f(){return 3;},x=gF){ }
console.log(x());//3

more:

if(window.test = function useless(){return 3;},x=window.test())//good
{
console.log(test());//3
//console.log(useless());//bad
}
qingzhishuishou
qingzhishuishou   2014.04.09 14:12

你直接用x=f,但是你f都没有定义啊

Csdn user default icon
上传中...
上传图片
插入图片