虽然我没用过js,但一个长度为1的数组你用下标1去取值本来就是不正确的用法啊
好牛的bug
应该是因为全局的 split 被重写了,或者是 Array.prototype[“1”] = xxx 被重写了
js 可以这样,
js是单线程的吧, 这顺序执行下来的, 其它可能还会触发什么get, set, 但console.log 顺序打印下来, 也至于出错吧?
这和线程无关
如果是我会用另一种方式检查吧?
MDN:javascript:Boolean
这边有提到
「如果Boolean构造函数的参数不是一个布尔值,则该参数会被转换成一个布尔值.如果参数是 0, -0, null, false, NaN, undefined, 或者空字符串 (""),生成的Boolean对象的值为false. 其他任何值,包括任何对象或者字符串"false", 都会创建一个值为true的Boolean对象.」
所以我会试试改成
if (Boolean(split[1]) === false)
另外我也没用过Javascript…一开始就用Typescript了。
这是引擎里的代码, 而且 split.length = 1,
我还是这个观点
Object.defineProperty(Array.prototype, “1”, {get(){return this[0]}})
