javascript – 任何人都可以解释这个奇怪的JS行为关于字符串连接?

前端之家收集整理的这篇文章主要介绍了javascript – 任何人都可以解释这个奇怪的JS行为关于字符串连接?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚发布了一个要点: https://gist.github.com/2228570
  1. var out = '';
  2.  
  3. function doWhat(){
  4. out += '<li>';
  5. console.log(out === '<li>'); // at this point,out will equal '<li>'
  6. return '';
  7. }
  8.  
  9. out += doWhat();
  10. console.log(out,out === '<li>');
  11. // I expect out to == '<li>',but it's actually an empty string!?

这个行为是奇怪的,有没有人有解释?这是google的难处.如果你使用out =或out = out,它也没有区别.

编辑:@paislee做了一个JSFiddle,演示了如何做一个单独的行,它的行为如预期:http://jsfiddle.net/paislee/Y4WE8/

解决方法

看来你期待在评估=之前要调用doWhat.

但是,行的进展是:

  1. out += doWhat(); // original line
  2. out = out + doWhat(); // expand `+=`
  3. out = '' + doWhat(); // evaluate `out`,which is currently an empty string
  4. out = '' + ''; // call `doWhat`,which returns another empty string
  5. out = ''; // result

out =’< li>‘;里面做什么更新变量,但太晚不能有持久的效果.

猜你在找的JavaScript相关文章