Зачем использовать 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 Я думаю, что вы ошибаетесь, массивы используют индексы. Пара ключей \ 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 Это на самом деле поощряется, но не для тривиальных вопросов с ответами, которые можно найти по всему интернету. –