javascript - 关于空字符串的使用。
问题描述

问题解答
回答1:从你给的代码上来看,当前使用情景里没必要预先赋值为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赋值为''空字符串,那才正确。
回答2:当前案例可以不用预定义为空字符串,可删除提高代码可阅读性
空字符串一般运用在针对一个字符串条件判断操作或者对自身操作的场景下:第一种:
var a = ’’;if (xxx) { a = ’hello’;}console.log(’a’); //这时如果你不提前定义好a,如果条件不满足if,那么就不会执行,下面调用变量a的时候就会undefined
第二种:
var a = ’’;a += 2; //这其实也要调用变量a,如果不提前定义,那么也是undefined回答3:
js预解析时会对var关键字定义的变量进行预解析,都会赋值undefined。下面将其赋值为字符串,上面定义的时候也就将它预先初始化为一个空字符串。只声明var res;,不给它赋值也是可行的。回答4:
个人认为是作者无意间的做法…
若硬要解读,这样也好也不好。好是因为你可以直观地认识到res是一个字符串变量,增强了可读性;不好则因为多了一次对象创建和释放的过程,性能有损耗,尽管损耗可以忽略不计。
相关文章:
1. html5 - javascript写业务有用到什么编程范式没?2. javascript - 一排三个框,各个框的间距是15px,距离外面的白框间距也是15px,这个css怎么写?3. javascript - vue 手机端项目在进入主页后 在进入子页面,直接按返回出现空白情况4. javascript - nodejs调用qiniu的第三方资源抓取,返回401 bad token,为什么5. html5 - vue-cli 装好了 新建项目的好了,找不到项目是怎么回事?6. javascript - immutable配合react提升性能?7. python3.x - python 中的maketrans在utf-8文件中该怎么使用8. javascript - jQuery post()方法,里面的请求串可以转换为GBK编码么?可以的话怎样转换?9. javascript - H5或者JS如何获得当前位置地理定位,只需要获取经纬度即可10. mysql - C#连接数据库时一直这一句出问题int i = cmd.ExecuteNonQuery();

网公网安备