本文翻译自:Is there a way to check for both `null` and `undefined`?

Since TypeScript is strongly-typed, simply using if () {} to check null and undefined doesn't sound right. 由于TypeScript是强类型的,因此仅使用if () {}来检查null和undefined听起来并不正确。

Does TypeScript has dedicated function or syntax sugar for this? TypeScript是否为此具有专用功能或语法糖?


#1楼

参考:https://stackoom.com/question/1xZxA/有没有办法检查-null-和-undefined


#2楼

Does TypeScript has dedicated function or syntax sugar for this TypeScript是否为此具有专用功能或语法糖

No. I just do something == null same as JavaScript. 不。我只是做something == null与JavaScript相同。


#3楼

I always write it like this: 我总是这样写:

var foo:string;if(!foo){foo="something";
}

This will work fine and I think it's very readable. 这可以正常工作,我认为它非常可读。


#4楼

Using a juggling-check, you can test both null and undefined in one hit: 使用杂项检查,您可以在一次undefined中同时测试nullundefined

if (x == null) {

If you use a strict-check, it will only be true for values set to null and won't evaluate as true for undefined variables: 如果使用严格检查,则仅对于设置为null值才为true,而对于未定义的变量则为true:

if (x === null) {

You can try this with various values using this example: 您可以使用以下示例尝试各种值:

var a: number;
var b: number = null;function check(x, name) {if (x == null) {console.log(name + ' == null');}if (x === null) {console.log(name + ' === null');}if (typeof x === 'undefined') {console.log(name + ' is undefined');}
}check(a, 'a');
check(b, 'b');

Output 输出量

"a == null" “一个==空”

"a is undefined" “一个未定义”

"b == null" “ b == null”

"b === null" “ b === null”


#5楼

I did different tests on the typescript playground: 我在打字稿游乐场进行了不同的测试:

http://www.typescriptlang.org/play/ http://www.typescriptlang.org/play/

let a;
let b = null;
let c = "";
var output = "";if (a == null) output += "a is null or undefined\n";
if (b == null) output += "b is null or undefined\n";
if (c == null) output += "c is null or undefined\n";
if (a != null) output += "a is defined\n";
if (b != null) output += "b is defined\n";
if (c != null) output += "c is defined\n";
if (a) output += "a is defined (2nd method)\n";
if (b) output += "b is defined (2nd method)\n";
if (c) output += "c is defined (2nd method)\n";console.log(output);

gives: 给出:

a is null or undefined
b is null or undefined
c is defined

so: 所以:

  • checking if (a == null) is right to know if a is null or undefined 检查(a == null)是否正确以知道a为null还是未定义
  • checking if (a != null) is right to know if a is defined 检查(a!= null)是否正确以了解是否已定义a
  • checking if (a) is wrong to know if a is defined 检查(a)是否错误以知道是否已定义a

#6楼

if(data){}

it's mean !data 意思是!数据

  • null 空值
  • undefined 未定义
  • false
  • .... ....

有没有办法检查`null`和`undefined`?相关推荐

  1. JavaScript检查null与undefined以及==和===之间的差异

    如何检查变量是否为null或undefined并且null和undefined什么区别? ==和===什么区别(很难在Google上搜索" ===")? #1楼 区别是微妙的. 在 ...

  2. 是否有标准函数检查JavaScript中的null,undefined或空白变量?

    是否有通用的JavaScript函数可检查变量是否具有值并确保其undefined或为null ? 我有以下代码,但是不确定是否能涵盖所有情况: function isEmpty(val){retur ...

  3. js基础中Null、undefined、NaN、false、0、{}的理解及使用

    数据类型: 值类型(基本类型):字符串(String).数字(Number).布尔(Boolean).对空(Null).未定义(Undefined).Symbol. 引用数据类型:对象(Object) ...

  4. 探索JavaScript中Null和Undefined的深渊

    当讨论JavaScript中的原始数据类型时,大多数人都知道的基本知识,从String,Number到Boolean.这些原始类型相当简单,行为符合常识.但是,本文将更多聚焦独特的原始数据类型Null ...

  5. 为什么null为对象,并且null和undefined有什么区别?

    为什么在JavaScript中将null视为object ? 正在检查 if ( object == null )Do something 与...相同 if ( !object )Do someth ...

  6. js中 NaN、 null 及 undefined 的区别(转载)

    NaN:保留字(表明数据类型不是数字) undefined:对象属性或方法不存在,或声明了变量但从未赋值. 即当你使用了对象未定的属性或者未定义的方法时或当你声明一个变量,但你确从未对其进行赋值,便对 ...

  7. Nodejs: TypeError: The super constructor to “inherits“ must not be null or undefined

    最近在用statsd时,这一句util.inherits(Configurator, process.EventEmitter); 报错:"TypeError: The super cons ...

  8. 解剖JavaScript中的null和undefined

    在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位 ...

  9. js在post后台接口的时候,一行代码完成删除对象中所有值为null、undefined或为空字符串““的属性

    var d= {a: 1,b: null,c: 3,d: undefined };Object.keys(d).forEach(k=>d[k]==null&&delete d[k ...

最新文章

  1. linux 安装输入法
  2. Opencv 数学基础--范数(17)
  3. python 爬取贝壳网小区名称_利用python爬取贝壳网租房信息
  4. suse11.3下samba服务的配置
  5. C/C++在Android开发中的应用
  6. 详解Xcode 4发布程序图文并茂教程
  7. 双十一,单身狗除了买买买,还能做什么?
  8. java第十版基础篇答案第九章_《Java语言程序设计》(基础篇原书第10版)第九章复习题答案...
  9. 关于PostgreSQL空间膨胀的研究
  10. ros开发增加clion常用模板及初始化配置(五)
  11. Codeforces Round #129 (Div. 1)E. Little Elephant and Strings
  12. 广东计算机科学导论考试试卷,计算机科学导论试题A答案
  13. 超实用windows软件推荐!新电脑必装哪些软件?
  14. cad快速选择命令快捷键_CAD快捷键命令大全
  15. #芯片# R8025(RX-8025T)
  16. 阿里巴巴的微服务开源之路
  17. 情人节看IT男如何告白,IT男的告白攻略
  18. EfficientNET_V1
  19. 华为鸿蒙八月,终于来了!华为鸿蒙系统确认8月发布:革命性产品首发搭载
  20. android程序 美食分享,下厨房Android产品分析

热门文章

  1. AppBarLayout、CollapsingToolbarLayout以及Toolbar
  2. ARM汇编学习之寄存器 之PC
  3. 使用NMAKE管理工程
  4. xUtils简介及其使用方法
  5. python安装cv-oracle时如何解决vc++的问题_python中cx_Oracle模块安装遇到的问题与解决方法...
  6. 【Android基础】 Launch Mode
  7. 领结婚证了,新的人生开始了!
  8. 风险项目投资选择与管理
  9. (转)linux如何让历史记录不记录敏感命令
  10. commons-beanutils的使用