巧用运算符
1、无符号类型转换,非数字默认为 0
巧用无符号右偏移 0 位,结果如下,字符串可以转换为 0,正数不变,但是要注意,有符号的负数得出的结果不是它本身,所以这个技巧不适用于负数,具体应用可以看看 loadash slice 源码。
example:
a = 123; a >>>= 0; b = '123'; b >>>= 0; c = '123a'; c >>>= 0;
|
lodash:
function slice(array, start, end) { let length = array == null ? 0 : array.length if (!length) { return [] } start = start == null ? 0 : start end = end === undefined ? length : end
if (start < 0) { start = -start > length ? 0 : (length + start) } end = end > length ? length : end if (end < 0) { end += length } length = start > end ? 0 : ((end - start) >>> 0) start >>>= 0
let index = -1 const result = new Array(length) while (++index < length) { result[index] = array[index + start] } return result }
|
2、类型转换,非数字默认为 0
上面的玩法是针对无符号类型的,这个方法是有无符号都适用。
a = 123; ~~a; b = '123'; ~~b; c = '123a'; ~~c; d = '-123'; ~~d; e = -123; ~~e;
|
这个用法是在一个 leetcode 题解看到的,做算法题可以常用,不过日常工作中就要看情况了,可能别人看不懂。
本文标题:JavaScript 奇技淫巧
文章作者:Canace
发布时间:2022-06-16
最后更新:2023-05-26
原始链接:https://canace.site/JavaScript%E5%A5%87%E6%8A%80%E6%B7%AB%E5%B7%A7/
版权声明:转载请注明出处