首页 > 在js中为什么不建议在表达式中赋值?

在js中为什么不建议在表达式中赋值?

例如,如下代码是不推荐的

var name
if (name = location.hash) {}

而推荐的是这种写法

var name = location.hash;
if (name) {}

请问为什么推荐的是这种写法?


因为我们一般是这样写的if (name == location.hash) {}用来判断是否相等


弱类型语言用==的时候用了=,你就哭了


第一点:不清爽

咱们写代码除了给自己看还要给别人看,那么有时候你自己看自己写的代码,如果第一眼看到这样的代码

var name
if (name = location.hash) {}

都得懂脑筋去"计算"下结果,更何况别人呢,容易造成疑惑,阅读障碍,当然并不是说不可以"秀技能",我的意思是在没事的时候,尽量不要作死,不然结果会很惨,比如上线前,突然就有问题了,别人看你代码帮你解决问题,然后看了半天。。。。。你懂得。

第二点:顺序

举个例子

var number = 0;

if(number++){
    console.log('1');
}else{
    console.log('0');
}

这个结果会是什么呢?我想很多新手会猜错,大多数人会在思考一下后得出答案,当然高手们就不说了。

如果这题是这样的呢?

var number = 0;
number++;
if(number){
    console.log('1');
}else{
    console.log('0');
}

我想大家的正确率应该急速上升,并且回答的速度也快了N倍,这就揭示了一个问题,可以好好写的地方,不要作。。。不然你可能命中了一些你意想不到的问题。


因为一个等号和两个等号很容易打错和看错。

有些语言还要求 if 后边的表达式求值后的类型必须是 bool 呢。

【热门文章】
【热门文章】