javascript小技巧

本文参考:这里

1. 使用!!操作符转换boolean类型

在变量前面加上!!运算符,可以将变量转换为boolean类型。
可以将0, null, "", undefined, NaN这些变量转换为false,其余变量转换为true。

function Account(cash) {
    this.cash = cash;
    this.hasMoney = !!cash;
}
var account = new Account(100.50);
console.log(account.cash); // 100.50
console.log(account.hasMoney); // true

var emptyAccount = new Account(0);
console.log(emptyAccount.cash); // 0
console.log(emptyAccount.hasMoney); // false

2. 使用+运算符转换数字

在变量前加上+运算符,可以将包含纯数字的字符串变量转换为数字。

function toNumber(strNumber) {
    return +strNumber;
}
console.log(toNumber("1234")); // 1234
console.log(toNumber("ACB")); // NaN
console.log(+new Date()) // 1461288164385

3.短路条件运算符 &&

user && user.login();
conected && login();

4. 使用||运算符设置默认值

function User(name, age) {
    this.name = name || "Oliver Queen";
    this.age = age || 27;
}
var user1 = new User();
console.log(user1.name); // Oliver Queen
console.log(user1.age); // 27

var user2 = new User("Barry Allen", 25);
console.log(user2.name); // Barry Allen
console.log(user2.age); // 25

当然,这个技巧估计以后没什么用了,在ES6上,语法支持设置默认参数值了。

5. 遍历数组时候缓存array.length

for(var i = 0, length = array.length; i < length; i++) {
    console.log(array[i]);
}

6. 检测对象属性

if ('querySelector' in document) {
    document.querySelector("#id");
} else {
    document.getElementById("id");
}

7. 获取数组左后一个元素

var array = [1,2,3,4,5,6];
console.log(array.slice(-1)); // [6]
console.log(array.slice(-2)); // [5,6]
console.log(array.slice(-3)); // [4,5,6]

8. 乱排数组

常见的错误用法:

var list = [1,2,3];
console.log(list.sort(function() { Math.random() - 0.5 })); // [2,1,3]

错误原因网上有很多解释。这里不解释了。
正确做法:

function shuffling(array) {
    var arr = array.slice(0);
    console.log(arr);
    for (var i = 0, len = array.length; i < len; i++) {
        var randomPos = Math.floor(Math.random() * (len - i));
        console.log(randomPos, len - i - 1);
        // 交换两个位置(randomPos和len - i - 1)的值
        if (randomPos === len - i - 1) continue;
        arr[randomPos] = arr[randomPos] ^ arr[len - i - 1];
        arr[len - i - 1]  = arr[randomPos] ^ arr[len - i - 1];
        arr[randomPos] = arr[randomPos] ^ arr[len - i - 1];
    }
    return arr;
}

你可能感兴趣的:(JavaScript)