javascript - 在js中为什么不建议在表达式中赋值?
高洛峰
高洛峰 2017-04-10 15:23:06
[JavaScript讨论组]

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

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

而推荐的是这种写法

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

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
大家讲道理

第一点:不清爽

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

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 (name == location.hash) {}用来判断是否相等

怪我咯

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

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

怪我咯

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号