我正在使用此代码检查未定义的变量,但它无效。
var uemail = localStorage.getItem("useremail");
if (typeof uemail === "undefined")
{
alert('undefined');
}
else
{
alert('defined');
}

答案 0 :(得分:16)
你可以检查这个真相:
if(uemail) {
console.log("I have something");
} else {
console.log("Nothing here...");
}
从这里查看答案:Is there a standard function to check for null, undefined, or blank variables in JavaScript?
希望这有帮助!
答案 1 :(得分:15)
从Typescript 3.7开始,您还可以使用无效合并:
let x = foo ?? bar();
相当于检查空值或未定义的值:
let x = (foo !== null && foo !== undefined) ?
foo :
bar();
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#nullish-coalescing
虽然不完全相同,但是您可以将代码编写为:
var uemail = localStorage.getItem("useremail") ?? alert('Undefined');
答案 2 :(得分:14)
在Typescript 2中,您可以使用未定义类型来检查未定义的值。 因此,如果您将变量声明为:
let uemail : string | undefined;
然后你可以检查变量z是否未定义为:
if(uemail === undefined)
{
}
答案 3 :(得分:6)
这是因为它已经为null或未定义。 Null或undefined没有任何类型。您可以先检查是否未定义。在打字稿(null == undefined)
中是真的。
if (uemail == undefined) {
alert('undefined');
} else {
alert('defined');
}
或
if (uemail == null) {
alert('undefined');
} else {
alert('defined');
}
答案 4 :(得分:2)
它确实有效,但null
和undefined
之间存在差异。您实际上正在分配给uemail,它将返回一个值,如果它不存在则返回null。根据{{3}}。
有关这两者之间差异的详细信息,请参阅documentation。
要获得解决方案,Garfty的答案可能有效,具体取决于您的要求。您可能还想查看this answer。
答案 5 :(得分:2)
添加这个迟到的答案以检查在某些情况下可能有用的object.propertie:
使用juggling-check,您可以在一次点击中测试null和undefined:
if (object.property == null) {
如果使用严格检查,则只有设置为null的值才会成立,并且对于未定义的变量不会评估为true:
if (object.property === null) {
Typescript没有检查变量是否定义的函数。
答案 6 :(得分:1)
与打字稿没有严格联系
只需添加以上所有答案,我们还可以使用速记语法
var result = uemail || '';
如果uemail
变量具有某个值,它将给您发送电子邮件,如果uemail
变量未定义,它将仅返回一个空字符串。
这为处理未定义的变量提供了一种不错的语法,并且还提供了一种在变量未定义的情况下使用默认值的方法。
答案 7 :(得分:1)
我知道这不是最佳和奇怪的例子,但很高兴知道还有另一种方法可以检查是否使用 JSON.stringify
const foo = '';
const buzz = null;
const fooBuzz = 0;
const array = [];
let declared;
const asUndefined = undefined;
if (JSON.stringify(foo)) {
console.log(foo); // empty string
} else {
console.log('undefined');
}
if (JSON.stringify(buzz)) {
console.log(buzz); // null
} else {
console.log('undefined');
}
if (JSON.stringify(fooBuzz)) {
console.log(fooBuzz); // 0
} else {
console.log('undefined');
}
if (JSON.stringify(array)) {
console.log(array); // []
} else {
console.log('undefined');
}
if (JSON.stringify(asUndefined)) {
console.log(asUndefined);
} else {
console.log('undefined'); // undefined
}
if (JSON.stringify(declared)) {
console.log(declared);
} else {
console.log('undefined'); // undefined
}
答案 8 :(得分:0)
使用'this'关键字访问变量。这对我有用
var uemail = localStorage.getItem("useremail");
if (typeof this.uemail === "undefined")
{
alert('undefined');
}
else
{
alert('defined');
}
答案 9 :(得分:0)
我们可以使用与.Net中相同的三元运算
isUserLoggedIn = service.isUserLoggedIn ? true : false;
它将验证未定义的条件,并将落入第二三元表达式。 三元条件运算符是if条件编码的较好形式,易于使用。
答案 10 :(得分:0)
故事迟了,但我认为有些细节被忽略了?
如果您使用
if (uemail !== undefined) {
//some function
}
从技术上讲,您正在将变量uemail
与变量undefined
进行比较,并且由于未实例化变量undefined
,因此默认情况下它将纯粹给出类型和值“ undefined”,因此比较返回真正。
但是它忽略了名称为const _undefined: undefined
的变量实际上可能存在的可能性(但是不太可能),因此不会是 undefined 类型的。
在这种情况下,比较将返回false。
为正确起见,必须声明未定义类型的常量 例如:
if (uemail === _undefined) {
//some function
}
然后通过以下方式进行测试:
true
此测试将返回uemail
,因为_undefined
现在等于_undefined
的值和类型,因为if (typeof(uemail) === 'undefined') {
//some function
}
现在已正确声明为 undefined类型。
另一种方式是
S3_KEY, S3_SECRET, S3_REGION, S3_BUCKET
在这种情况下,布尔值返回基于比较两端的两个字符串进行比较。从技术角度来说,这是不测试未定义的方法,尽管它可以达到相同的结果。
答案 11 :(得分:-6)
在Typescript中,我们可以像这样检查undefined:
The platform in Windows.
Java version is Java 8.