为了账号安全,请及时绑定邮箱和手机立即绑定

关于空字符串的使用。

关于空字符串的使用。

犯罪嫌疑人X 2018-11-20 13:18:13
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

从你给的代码上来看,当前使用情景里没必要预先赋值为string类型。不预设也不会出错。

但不赋值和赋值为空字符串有个本质的区别,即改变了变量的类型。

不进行赋值的时候是undefined类型,赋值为null则是null类型,赋值为空字符串""则为string类型。

稳妥起见,既然这个变量的预期结果是string类型,那么声明时就指定其类型是很稳妥的办法。

如果不指定呢?那有时候确实会出问题的。

问题主要发生在要用这个变量来拼接其他数据的时候,这很可能会触发隐式的类型转换,你就能发现差别了。

如下:

var a;
a+"a";

那么结果是什么呢?不是"a",而是"undefineda"。

如果把a预设为null,则结果是"nulla"。

你的例子里,对res是直接赋值而不是用它来拼接,所以不赋值为空字符串也没影响,但不建议这么做。

再来个例子,拼接0-9的数字,假如你想得到的也是字符串,如"0123456789":

var res;for (var i = 0; i < 10; i++) {
    res+=i;
}console.log(res);

那么不声明的话可以吗?不可以,res会被转换为number类型,但undefined转换后是NaN,最后你得到的结果也是NaN。

如果把res赋值为""空字符串,那才正确。


查看完整回答
反对 回复 2018-12-15
  • 1 回答
  • 0 关注
  • 572 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信