gpt4 book ai didi

javascript - 检查变量是否未定义,因为它 === true 或已分配值

转载 作者:行者123 更新时间:2023-11-29 17:07:47 25 4
gpt4 key购买 nike

有时我看到在 javascript 上执行此操作以检查 variable 是否不是 undefined 是很常见的,因为它有一个分配的:

if(variable) {
/* not undefined, do something */
}

但是,我问自己在以下情况下如何检查 variable 是否不是 undefined:

现场演示: http://jsfiddle.net/Vp8tN/1/

$(function() {

var person = create('John');
var isMarried = person.isMarried;

console.log('isMarried: ' + isMarried);

if(isMarried) {
console.log('Do something!');
}

});

function create(name) {
var person = {};
person.name = name;
person.isMarried = getRandom();
return person;
};

function getRandom() {
var arr = [true, 'No', undefined];
var rand = arr[Math.floor(Math.random() * arr.length)];
return rand;
};

在这种情况下,isMarried 变量可以是 true'No'undefined

所以,我的问题是...

1) 如何检查 isMarried 变量是否NOT undefined因为它是 === true (等于 true) 还是因为它分配了一个(最后一个发生在 isMarried === 'No' 时)。

2) 是否可以在不使用额外的 if 语句或条件的情况下进行检查?

3)检查这个的更好方法是什么?


在上述两种情况下,(第 1 个) 我都进入了 if 语句。检查浏览器控制台的输出:

isMarried: true
Do something!
isMarried: undefined
isMarried: No
Do something!

PS.我使用 jQuery 只是为了测试,这个问题与那个框架!谢谢。

最佳答案

单个相等性测试有三个选项:

  1. 严格相等。 if (person.isMarried === true)if (person.isMarried !== undefined)。检查变量是否明确等于某物(不允许类型转换)。

  2. 松散平等if (person.isMarried == true) 允许类型转换。

  3. 任何真值/假值如果(person.isMarried)。如果 person.isMarried 包含任何真值,这将得到满足。即使是 “no” 也是一个真值。

如果你想区分“no”falseundefined,你可能不得不使用超过一个比较,因为它们都是不同类型的不同值。


如果您只想知道变量是否有任何值(例如,不是未定义的),那么您可以使用严格相等检查并与实际的 undefined 值进行比较:

if (person.isMarried !== undefined) {
// there is some value in person.isMarried though it could be anything
// other than the undefined value
}

关于javascript - 检查变量是否未定义,因为它 === true 或已分配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com