JavaScript 大杂烩
避免污染全局变量
var foo = 12; console.log(foo);
上面的代码等同于
window.foo = 12;
如下代码会覆盖系统默认print函数,会让网页无法打印:
function print () { // do something } print();
我们只需要简单的做一下变更,就能避免污染全局变量:
(function () { var foo = 12; console.log(window.foo); // → undefined console.log(foo); // → 12 })();
如果更进一步,可以将window等全局变量当作参数传到function:
(function (global, doc) { global.setTimeout(function () { doc.body.innerHTML = "Hello!"; }, 1000); })(window, document);
值类型转换
// 任何值转为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" // }'