JavaScript 高级程序设计中3.3的问题
PHP中文网
PHP中文网 2017-04-11 12:26:27
[JavaScript讨论组]

JavaScript 高级程序设计3.3章里有这样一段
因此,可以在修改变量值的同时修改值的类型,如下所示:

`var message = "hi";
message = 100; // 有效,但不推荐
`
不推荐的原因是什么呢?

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
PHP中文网

任意的修改一个变量的数据类型可能引起使用变量时的混乱和麻烦,增大代码出错的可能性,所以即使可以讲任何类型的值赋给一个变量,到一个变量从始至终只保存一个类型的值才是最佳实践。

黄舟

Javascript 是弱类型的语言,所以一个变量可以保存值的类型改变的。因此这样写并不会有语法错误。

而 JS 里面当两边参数不一样的时候会进行类型转换。所以下面几种情况也是合法的 JS 语法

12 > 2;    // true
"12" > 2;  // true
12 > "2";   // true
"12" > "2";  // false

也就是表达式的中变量的类型会影响这个表达式的计算结果,所以JS的各种情况比较复杂,对于新手来说就太多东西或是会因为太多东西不熟悉容易出错。所以就避重就轻,就建议运算符两侧的数据类型要一致。
而运算符两侧一般都是变量,所以要追踪变量的赋值,确定变量的类型。所以如果一个变量类型一直保持不变的话那么就方便我们调试程序了。
其实这是有点儿与写强类型的语言一样,一个变量只能赋值为一种类型的数据,防止出错和提高程序效率。但是在 JS 不会检查变量的类型,解释器是没有办法从语法上检测你的以个变量类型是否一直保持一致,就只能我们自己注意。

就不评价这种弱类型是否好不好了。弱类型减小了入门的难度,当你特别熟悉 JS 之后也可以写出特别精简的代码。不好之处就是处在入门和特别牛X之间的时候,就特别容易犯错误,所以建议这个时候尽量保持变量类型不变。

天蓬老师

声明是字符串类型
后面是Int类型

高洛峰

一句话,这样会引起变量类型混乱。

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

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