java script if else statement if i “=” 0でも数回出力する。

投稿者: Anonymous

if(i = 0) でも 以下のJavaScriptコードが内容を実行するのはなぜですか? if( “==”)でなければならないことを知っていますが。 “I’m”と “A” “A” “A”…という出力を得ることができます。PythonやJavaで見たことがないと思います。

_x000D_

_x000D_

function titleCase(str) {_x000D_
      var array = str.split(" ");_x000D_
      var str1 = "";_x000D_
      var i = 0;_x000D_
      while(i < array.length){_x000D_
          str = array[i]_x000D_
          if(i = 0){_x000D_
               console.log(str.charAt(0).toUpperCase() + str.substring(1));_x000D_
          }else{_x000D_
               console.log(console.log(str.charAt(0).toUpperCase() + str.substring(1)));_x000D_
          }_x000D_
          i++;_x000D_
      }_x000D_
      console.log(str1)_x000D_
    }_x000D_
    _x000D_
titleCase("I'm a little tea pot");

_x000D_

_x000D_

_x000D_

解決

if(i = 0)で毎回iに0が代入されてるのに、whileを抜ける条件が『array.lengthより大きくなったら』だからです。
iは1までしか増えないので永遠にloopを抜けれません。


strを取得するタイミングではiは1なので、strにはaが入ってます。
if文でiは0になります。

if文は、i = 0の結果である0を評価します。0はfalseとして扱われるので、console.log(console.log(str.charAt(0).toUpperCase() + str.substring(1)));しか実行されませんね。

と、いうわけで2回目のloop以降は、永遠にAが出力され続けませんか?

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *