避免污染全局变量
1 2
| var foo = 12; console.log(foo);
|
上面的代码等同于
如下代码会覆盖系统默认print函数,会让网页无法打印:
1 2 3 4
| function print () { // do something } print();
|
我们只需要简单的做一下变更,就能避免污染全局变量:
1 2 3 4 5 6 7
| (function () { var foo = 12; console.log(window.foo); // → undefined console.log(foo); // → 12 })();
|
如果更进一步,可以将window等全局变量当作参数传到function:
1 2 3 4 5
| (function (global, doc) { global.setTimeout(function () { doc.body.innerHTML = "Hello!"; }, 1000); })(window, document);
|
值类型转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| // 任何值转为Number var foo = "12"; var myNumber = +foo; // → 12 var negativeFoo = -foo; // → -12 // 对象转为数组 var args = { 0: "foo", 1: "bar", length: 2 }; Array.prototype.slice.call(args) // → \[ 'foo', 'bar' \] // 转为布尔值 /// 正正得正 var t = 1; var f = 0; !!t // → true !!f // → false /// 正负得负 !t // → false !f // → true // 转为字符串 var foo = 12; "" + foo // → "12" foo = { hello: "world" }; JSON.stringify(foo); // → '{ "hello":"world" }' JSON.stringify(foo, null, 4); // 格式化 // → // '{ // "hello": "world" // }'
|