我正在使用此代码检查未定义的变量,但它不起作用.
var uemail = localStorage.getItem("useremail");
if (typeof uemail === "undefined")
{
alert('undefined');
}
else
{
alert('defined');
}Run Code Online (Sandbox Code Playgroud)
Pau*_*ter 40
从 Typescript 3.7 开始,您还可以使用无效合并:
let x = foo ?? bar();
Run Code Online (Sandbox Code Playgroud)
这相当于检查 null 或 undefined:
let x = (foo !== null && foo !== undefined) ?
foo :
bar();
Run Code Online (Sandbox Code Playgroud)
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#nullish-coalescing
虽然不完全相同,但您可以将代码编写为:
var uemail = localStorage.getItem("useremail") ?? alert('Undefined');
Run Code Online (Sandbox Code Playgroud)
Gar*_*fty 30
你可以检查这个truthy:
if(uemail) {
console.log("I have something");
} else {
console.log("Nothing here...");
}
Run Code Online (Sandbox Code Playgroud)
从这里查看答案:是否有一个标准函数来检查JavaScript中的null,undefined或blank变量?
希望这可以帮助!
小智 21
在Typescript 2中,您可以使用Undefined type来检查未定义的值.因此,如果您将变量声明为:
let uemail : string | undefined;
Run Code Online (Sandbox Code Playgroud)
然后你可以检查变量z是否未定义为:
if(uemail === undefined)
{
}
Run Code Online (Sandbox Code Playgroud)
FRE*_*CIA 10
添加此迟到的答案以检查在某些情况下可以提供帮助的 object.properie:
使用杂耍检查,您可以一次性测试 null 和 undefined:
if (object.property == null) {
Run Code Online (Sandbox Code Playgroud)
如果使用严格检查,则仅对设置为 null 的值才为真,对未定义的变量不会评估为真:
if (object.property === null) {
Run Code Online (Sandbox Code Playgroud)
Typescript 没有检查变量是否已定义的功能。
2020 年 10 月更新
您现在还可以使用Typescript 中引入的空合并运算符。
let neverNullOrUndefined = someValue ?? anotherValue;
Run Code Online (Sandbox Code Playgroud)
在这里,anotherValue只有在someValue为空或未定义时才会返回。
这是因为它已经为null或未定义。Null或undefined没有任何类型。您可以先检查是否未定义。在打字稿中(null == undefined)是对的。
if (uemail == undefined) {
alert('undefined');
} else {
alert('defined');
}
Run Code Online (Sandbox Code Playgroud)
要么
if (uemail == null) {
alert('undefined');
} else {
alert('defined');
}
Run Code Online (Sandbox Code Playgroud)
编辑:07/2021
正如许多人指出的那样,在 TypeScript 中不再可能重新定义undefined,因此您不太可能遇到这种风险。但在较旧的浏览器中,如果使用 ECMA 5 之前的 JS,则仍然存在这种风险。
如果你使用
if (uemail !== undefined) {
//some function
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,您正在将变量uemail与变量进行比较undefined,并且由于后者未实例化,因此默认情况下它将纯粹给出“未定义”的类型和值,因此比较返回 true。但它忽略了名为 的变量undefined实际上可能存在的可能性(尽管不太可能),因此不会是undefined类型。在这种情况下,比较将返回 false。
为了正确起见,必须声明一个未定义类型的常量 ,例如:
const _undefined: undefined
Run Code Online (Sandbox Code Playgroud)
然后通过以下方式进行测试:
if (uemail === _undefined) {
//some function
}
Run Code Online (Sandbox Code Playgroud)
该测试将返回trueasuemail的值和类型_undefined,_undefined现在已正确声明为undefined类型。
另一种方法是
if (typeof(uemail) === 'undefined') {
//some function
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,布尔返回基于比较两端的两个字符串。从技术角度来看,这不是测试未定义,尽管它达到了相同的结果。
| 归档时间: |
|
| 查看次数: |
99321 次 |
| 最近记录: |