ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

JavaScriptの基礎 細かな注意点

JavaScriptを勉強中。
気づいたことを随時追加する予定。

目次


前置演算と後置演算の違い

インクリメント/デクリメントの結果を別名の変数に代入したいときは前置演算をつかう

例: 前置インクリメント

let x = 5;
let y = ++x;
console.log(x); // =>6
console.log(y); // =>6


例: 後置インクリメント

let x = 5;
let y = x++;
console.log(x); // =>6
console.log(y); // =>5


例の解説
xの演算結果は前置と後置で同じ。
xを更に別の変数へ代入する時に違いが出る。
前置の場合は演算したあとに変数へ代入。
後置の場合は演算する前に代入、その後に演算する。

浮動小数点数値を含む計算

JavaScript内では2進数で演算を行うため10進数と違う結果になるときがある。

例: (0.2 * 3)が0.6にならない

console.log(0.2 * 3); //=> 0.6000000000000001
console.log(0.2 * 3 === 0.6); //=> false


解決策
演算する前に浮動小数点数値を整数値にして演算後に桁数を戻す。
小数点以下1桁の場合は10を掛けてから演算した後に10で割って桁を戻す。

例: 解決策

console.log(((0.2 * 10) * 3) / 10); //=> 0.6
console.log(((0.2 * 10) * 3) / 10 === 0.6); //=> true


暗黙的なfalse

JavaScriptでは空文字列(''や"")と数値の0は条件判断のときに偽と判定される。
(Rubyの場合はnilとfalse以外は真なので、空文字列や0は真になる。)

JavaScriptで偽となる値

  • 空文字列 ("", '')
  • 0 (数値)、NaN
  • null、undefined


例: 空文字列と0を使った条件分岐

let str = '', num = 0;
str ? console.log('空文字はtrue') : console.log('空文字はfalse'); //=> 空文字はfalse
num ? console.log('0はtrue') : console.log('0はfalse'); //=> 0はfalse