初心者がとまどうJavaScript イディオム
初心者がとまどうJavaScript イディオム:
parseFloat(v) に比べて高速なのに加えて、parseFloatとは細かい挙動が異なる
(例えば空文字列の場合、parseFloatならば NaN になりますが、 +v の場合はゼロになります)。
+v に比べてあまり使われることはありませんが、初見でもある程度意味が理解しやすいメリットはあるかもしれません。
ソースコードの最初と最後にオマジナイのように書かれる、わからない人にとっては謎のfunction文。JavaScriptは関数の中に書かない変数宣言は全てグローバル変数として扱われてしまうので、グローバルスコープを汚さないように関数式でコード全体を囲っています。(上記コードと下記コードは同じ意味)
関数の先頭などで、デフォルト引数の設定などに良く使われるイディオム。例えばoがundefinedの時などに、デフォルト値として空のオブジェクトを設定する、というような用法で使われます。
強制的に整数にするイディオムです。vが文字列の場合でも、まず数値化され、その後整数化されます。なお、
+v (数値化)
var v = "123"; console.log(+v + 100) // 223 console.log(v + 100) // 123100
(例えば空文字列の場合、parseFloatならば NaN になりますが、 +v の場合はゼロになります)。
v - 0 (数値化)
var v = "123"; console.log((v - 0) + 100) // 223 console.log(v + 100) // 123100
v + "" (文字列化)
var n = 123; console.log(n + 123); //246 console.log(n + "" + 123); //123123
(function(){ ... })(); // スコープ化
// 先頭の';'は省略可能 ;(function() { var x = "hello world"; console.log(x); })(); // 下記と同じ意味 var f = function() { var x = "hello world"; console.log(x); }; f();
&& (if文の省略)
var o = { f: function() { console.log("hello world"); } }; if(o) { if(o.f) { o.f(); } } // 省略形 o && o.f && o.f();
v = v || {}
function f(o) { o = o || {}; ... }
v | 0 (整数化)
var i = v | 0; console.log(-2.1 | 0); // -2 console.log(Math.floor(-2.1)); // -3
Math.floor
でも似たような処理になりますが、マイナス数値を扱った場合の挙動が違うので注意。
コメント
コメントを投稿