javascript小技巧

javascript小技巧文章封面

1. 类型强制转换

string强制转换为数值类型(不包含函数)
// javascript code-model
// 乘号强制
'32' * 1         // 32
'ds' * 1 // NaN
NULL * 1 // 0
undefined * 1 // NaN
1 * { valueOf: () => '3' } // 3 // 加号强制 + '123' // 123 + 'ds' // NaN + '' // 0 + null // NaN + undefined // NaN + { valueOf: () => '3' } // 3


使用Boolean过滤数组中所有假值
// javascript code-model
const compact = arr => arr.filter(Boolean); compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34]); // [1, 2, 3, "a", "s", 34]


双位运算符 ~~
// javascript code-model
Math.floor(4.9) === 4 // true
// 简写为:
~~4.9 === 4 // true // 注意负数: Math.floor(4.9) // 4 ~~4.5 // 4 ~~-4.5 // -4 Math.floor(-4.5) // -5


取整 | 0
// javascript code-model
1.3 | 0 // 1
-1.9 | 0 // -1


奇偶判断 & 1
// javascript code-model
const num = 3;
!!(num & 1); // true
!!(num % 1); // true


2. 函数技巧

强制传参
// javascript code-model
const mandatory = () => {
    throw new Error('Missing parameter!');
}
let foo = (bar = mandatory()) => {
    // 如果不传bar 则会执行 mandatory 内容,也就是报错
}


惰性载入函数
// javascript code-model
//正常书写
function fool (a, b) {
if (a !== b) { console.log('aaa'); } else { console.log('bbb'); } } // 惰性函数 function fool (a, b) { if (a !== b) { fool = function () { console.log('aaa'); } } else { fool = function () { console.log('bbb'); } } }

    惰性函数第一次运行后就会覆写这个方法,下次运行是就不会进行判断了。当然目前只有一个判断,如果判断很多,分支比较复杂,那么节约的资源还是非常可观的。



    留言 (0)
    音乐封面 点击展开工具栏