細數JavaScript中那些神乎其神的技巧
閑來無事,整理一下JavaScript中那些神乎其神的技巧,假裝大牛的樣子
1. 字符串轉換為數字
var a = "123";
console.log(+a); // 123
console.log(typeof +a); // number
// 同樣可用于日期轉換為數值:
var b = +new Date(); // 1468545682168
2. 數值向下取整
var a = ~~3.14; // 3
var b = 3.14>>0; // 3
var c = 3.14|0; // 3
3. 字符串轉換為數值并取整<!-- more -->
var a = "3.14"|0; // 3
var b = "3.14"^0; // 3
4. 函數設置默認值
function func(arg){
var arg = arg || "default";
// arg 為 undefined, null, "", 0, false, NaN 時最后都得到"default"
}
5. 變量值交換
var a = 1,
b = 2;
a = [b, b = a][0];
console.log(a); // 2
console.log(b); // 1
6. 使用 for in 遍歷對象取到屬性名與屬性
var obj = {
a: 1,
b: 2
}
for(var i in obj) {
console.log("obj." + i + " = " + obj[i]);
}
// output: obj.a = 1
// obj.b = 2
7. 截斷數組
var arr = [1, 2, 3, 4, 5, 6];
arr.length = 3;
console.log(arr); // [1, 2, 3]
8. 提高遍歷較大Enumerable數據的性能
var arr = [1, 2, 3, 4, 5, 6, ...];
var len = arr.length; // 緩存arr.length
for(var i = 0; i < len; i++) {
console.log(arr[i]);
}
// 或者(推薦使用)
for(var i = 0, a; a = arr[i++];) {
console.log(a);
}
9. 使用 && 替代單一條件判斷
// 你可能這樣寫過
if(!token) {
login();
}
// 其實這樣也可以
!token && login();
10. 檢測 對象/數組 中是否有指定 屬性/元素
var CURD = {
add: function() {},
delete: function() {},
edit: function() {}
}
console.log("add" in CURD); // true
console.log("find" in CURD); // false
var arr = [1, 2, 3];
console.log(1 in arr); // true
console.log(6 in arr); // false
11. 通過閉包調用setTimeout
for(var i = 0; i < 10; i++) {
setTimeout(function(){
console.log(i); // 10 10 10 ...
},500);
}
for(var i = 0; i < 10; i++) {
(function(i){
setTimeout(function(){
console.log(i); // 0 1 2 3 ...
},500)
})(i);
}
來自:https://segmentfault.com/a/1190000008017702
本文由用戶 darkjune 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!