我一直在修补对象,看起来你可以将'(一个空字符串)作为属性名称,如下所示:
o = {
'': 'hello',
1: 'world',
'abc': ':-)',
};
console.log(o['']);
Run Code Online (Sandbox Code Playgroud)
似乎工作得很好,但我很想知道,这真的有效吗?我已经戳了ECMA的规格,并问我们知识渊博的朋友谷歌的问题变化,我的结论是我不知道.
我的消息来源
根据Mozilla文档:
在数值上下文中使用时,未定义的值将转换为NaN.
那么为什么以下两个都等于真呢?:
NaN != undefined
NaN !== undefined
Run Code Online (Sandbox Code Playgroud)
我可以理解,Nan !== undefined因为变量类型会有所不同......
当组合伪元素选择器(用于范围输入)时,我看到没有应用样式。这迫使我分离我的选择器并复制我的 CSS。
有谁知道为什么会发生这种怪癖?
/* Keeping the selectors separate works */
.range1 {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.range1::-webkit-slider-runnable-track {
height: 6px;
border-radius: 3px;
border: 1px solid black;
}
.range1::-moz-range-track {
height: 6px;
border-radius: 3px;
border: 1px solid black;
}
/* Combining the selectors fails */
.range2 {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.range2::-webkit-slider-runnable-track,
.range2::-moz-range-track {
height: 6px;
border-radius: 3px;
border: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)
代码笔示例。