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