JavaScript 高级程序设计中3.3的问题

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

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

阅读 3.1k
4 个回答

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

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

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

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题