爲什麼會使用in
而不是!== undefined
來檢查一個對象是否包含密鑰? 例如:`!== undefined`和`in`之間的區別
var obj = {};
obj.a !== undefined; // false
'a' in obj; // false
有什麼區別?
爲什麼會使用in
而不是!== undefined
來檢查一個對象是否包含密鑰? 例如:`!== undefined`和`in`之間的區別
var obj = {};
obj.a !== undefined; // false
'a' in obj; // false
有什麼區別?
!== undefined
檢查值是否爲undefined
。 in
檢查如果一個對象包含一個密鑰,其值仍然可以undefined
:
var obj = {
a: undefined,
};
obj.a !== undefined; // false
'a' in obj; // true
@MaxZoom我認爲你錯了,數組使用索引。 key \ property:value對都適用於Object對象。命名是可以互換的。你可以同時使用它們。但是,它們之間也有細微的差別。 –
@BekimBacaj我添加了一個新帖子來顯示區別 – MaxZoom
作爲每官方documentation操作者如果in
檢查指定的屬性在一個給定的對象是否存在。
下面的代碼說明有property
和key
之間的差異:
// define Point object
function Point() {
this.xPos = 0;
this.yPos = 0;
}
// Add new property
Object.defineProperty(Point.prototype, "position", {
get: function() {
return "X: " + this.xPos + " Y: " + this.yPos;
},
set: function(thePoint) {
var parts = thePoint.split(", ");
this.xPos = parts[0] || "";
this.yPos = parts[1] || "";
}
});
var aPoint = new Point();
aPoint.position= "10, 20";
console.log("Point coordinates " + aPoint.position);
console.log("Point has position: " + ('position' in aPoint));
console.log("Point keys: " + Object.keys(aPoint));
你剛纔問及在同一分鐘內回答你的問題? – Loaf
@Loaf是的,http://stackoverflow.com/help/self-answer –
@Loaf這實際上是鼓勵,但不是在互聯網上可以找到答案的瑣碎問題 –