扫码关注官方订阅号
Document box
box
走同样的路,发现不同的人生
不传的话,执行的时候
sheet.deleteRule(undefined);
可以执行,但是没法删除
尝试了一下 sheet.deleteRule() 会报错 1 argument required, but only 0 present,也就是说,参数是一定要给的。
sheet.deleteRule()
1 argument required, but only 0 present
但是 sheet.deleteRule(void 0) 可以执行,而且可以删除,感觉很神奇的样子。
sheet.deleteRule(void 0)
首先申明 void 0 的结果是 undefined,这个可以证明:
void 0
undefined
console.log(void 0, typeof void 0) // undefined "undefined"
然后试试怎么处理 undefined 可以把它变成整数呢,如果 parseInt(void 0),得到的是 NaN;然后用一个常用的简洁的转换方式 ~~(void 0),这回得到了 0。
parseInt(void 0)
NaN
~~(void 0)
0
所以猜测 deleteRule 的实现过程是这样的
deleteRule
CSSStyleSheet.prototype.deleteRule = function() { if (arguments.length < 1) { throw new Error("1 argument required, but only 0 present."); } // this.rules 是个伪数组 [].splice.call(this.rules, ~~arguments[0], 1); };
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不传的话,执行的时候
可以执行,但是没法删除
尝试了一下
sheet.deleteRule()会报错1 argument required, but only 0 present,也就是说,参数是一定要给的。但是
sheet.deleteRule(void 0)可以执行,而且可以删除,感觉很神奇的样子。首先申明
void 0的结果是undefined,这个可以证明:然后试试怎么处理
undefined可以把它变成整数呢,如果parseInt(void 0),得到的是NaN;然后用一个常用的简洁的转换方式~~(void 0),这回得到了0。所以猜测
deleteRule的实现过程是这样的