1. 如何检查变量是否为nullundefined并且nullundefined什么区别?

  2. =====什么区别(很难在Google上搜索“ ===“)?


#1楼

区别是微妙的。

在JavaScript中, undefined变量是从未声明或从未分配值的变量。 假设您声明var a; 例如,那么a将是undefined ,因为它从未分配任何值。

但是如果您再分配a = null; 那么a现在将为null 。 在JavaScript中, null是一个对象(如果您不相信我,请在JavaScript控制台中尝试typeof null ),这意味着null是一个值(实际上,甚至undefined都是一个值)。

例:

var a;
typeof a;     # => "undefined"a = null;
typeof null;  # => "object"

这在函数参数中可能很有用。 您可能需要一个默认值,但是认为null为可以接受的。 在这种情况下,您可以执行以下操作:

function doSomething(first, second, optional) {if (typeof optional === "undefined") {optional = "three";}// do something
}

如果省略optional参数doSomething(1, 2) then optional将是"three"字符串,但如果传递doSomething(1, 2, null)则optional将为null

对于等于==和严格等于===比较器,第一个比较器是弱类型,而严格等于也检查值的类型。 这意味着0 == "0"将返回true; 而0 === "0"将返回false,因为数字不是字符串。

您可以使用这些运算符在undefinednull之间进行检查。 例如:

null === null            # => true
undefined === undefined  # => true
undefined === null       # => false
undefined == null        # => true

最后一种情况很有趣,因为它允许您检查变量是未定义的还是null,而没有别的:

function test(val) {return val == null;
}
test(null);       # => true
test(undefined);  # => true

#2楼

未定义

这意味着该变量尚未初始化。

范例:

var x;
if(x){ //you can check like this//code.
}

等于(==)

它只检查值等于数据类型。

范例:

var x = true;
var y = new Boolean(true);
x == y ; //returns true

因为它只检查值。

严格等于(===)

检查值和数据类型应该相同。

范例:

var x = true;
var y = new Boolean(true);
x===y; //returns false.

因为它检查数据类型x是原始类型,y是布尔对象。


#3楼

规范是为这些问题提供完整答案的地方。 总结如下:

  1. 对于变量x ,您可以:

    • 通过使用===直接比较来检查它是否为null 。 示例: x === null
    • 通过以下两种基本方法之一检查其是否undefined :与undefinedtypeof直接比较。 由于各种原因 ,我更喜欢typeof x === "undefined"
    • 通过使用==并依靠稍微神秘的类型强制规则来检查它是否为nullundefined之一,这意味着x == null确实可以满足您的要求。
  2. =====之间的基本区别在于,如果操作数是不同类型,则===将始终返回false==将使用导致某些稍微不直观的行为的规则将一个或两个操作数转换为相同类型。 如果操作数具有相同的类型(例如,两者都是字符串,例如上面的typeof比较),则=====行为将完全相同。

更多阅读:

  • 安格斯·克罗尔的真相,平等和JavaScript
  • Andrea Giammarchi的JavaScript强制性神秘化
  • comp.lang.javascript常见问题解答: JavaScript类型转换

#4楼

如果(逻辑)检查是否为负号(!),并且您想同时捕获JS nullundefined JS(因为不同的浏览器将为您提供不同的结果),则应使用限制性较小的比较:例如:

var ItemID = Item.get_id();
if (ItemID != null)
{//do stuff
}

这将同时捕获nullundefined


#5楼

如何检查变量是否为null或未定义

只需检查变量是否具有如下有效值:

if(variable)

如果变量不包含,它将返回true:

  • 空值
  • 未定义
  • 0
  • “”(空字符串)
  • N

#6楼

如何检查变量是否为nullundefined ...

变量是否为null

if (a === null)
// or
if (a == null) // but see note below

...但是请注意,如果a undefined ,后者也将适用。

它是undefined

if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below

...但是再次,请注意,最后一个是模糊的; 如果anull ,则也将为true。

现在,尽管有上述情况,检查这些内容的通常方法是使用它们是的事实:

if (!a) {// `a` is falsey, which includes `undefined` and `null`// (and `""`, and `0`, and `NaN`, and [of course] `false`)
}

这由规范中的ToBoolean定义。

...以及nullundefined和有什么undefined

它们都是通常用来表示缺少某些东西的值。 undefined是更通用的一种,用作变量的默认值,直到为其分配了其他值,作为调用函数时未提供的函数参数的值,以及当您询问变量时获得的值没有属性的对象。 但也可以在所有这些情况下明确使用它。 (不具有属性的对象与具有值为undefined的属性之间存在差异;为参数调用具有值为undefined的函数与完全禁用该参数之间存在差异。)

nullundefined更加具体:这是一个空白对象引用。 当然,JavaScript是松散类型的,但并非与JavaScript交互的所有事物都是松散类型的。 如果浏览器中的DOM之类的API需要空白的对象引用,则我们使用null ,而不是undefined 。 同样,DOM的getElementById操作返回一个对象引用-一个有效的对象引用(如果找到了DOM元素),或者为null (如果没有找到)。

有趣的是(或者不是),它们是自己的类型。 也就是说, null是Null类型中的唯一值, undefined是Undefined类型中的唯一值。

“ ==”和“ ===”有什么区别

它们之间的唯一区别是==将执行强制转换以尝试使值匹配,而===则不会。 因此,例如"1" == 1为true,因为"1"强制为1 。 但是"1" === 1false ,因为类型不匹配。 ( "1" !== 1为真。) ===第一步(实际)是“操作数的类型是否相同?” 如果答案为“否”,则结果为false 。 如果类型相同,则将完全执行==操作。

类型强制使用非常复杂的规则,并且会产生令人惊讶的结果(例如, "" == 0为true)。

规格中的更多内容:

  • 抽象平等比较 ( == ,也称为“宽松”平等)
  • 严格平等比较 ( ===

#7楼

您可以使用下面的代码检查所有四(4)条条件以进行验证,例如not null,not blank,not undefined和not zero仅在javascript和jquery中使用此代码(!(!(variable)))。

function myFunction() {
var data;  //The Values can be like as null, blank, undefined, zero you can testif(!(!(data)))
{//If data has valid valuealert("data "+data);
}
else
{//If data has null, blank, undefined, zero etc.alert("data is "+data);
}

}


#8楼

广告1. null不是全局对象属性的标识符,例如undefined 可以是

 let x; // undefined let y=null; // null let z=3; // has value // 'w' // is undeclared if(!x) console.log('x is null or undefined'); if(!y) console.log('y is null or undefined'); if(!z) console.log('z is null or undefined'); try { if(w) 0 } catch(e) { console.log('w is undeclared') } // typeof not throw exception for undelared variabels if(typeof w === 'undefined') console.log('w is undefined'); 

广告2。 ===检查值和类型。 ==不需要相同的类型,并且在比较之前进行隐式转换(使用.valueOf().toString() )。 这是全部( src ):

如果

== (其否定!=

=== (其否定!==

JavaScript检查null与undefined以及==和===之间的差异相关推荐

  1. 一元流量参数为null_了解JavaScript中null和undefined之间的差异和相似之处

    干货技术→JavaScript 乍一看,null和undefined看起来可能相同,但它们远非如此.本文将探讨JavaScript中null和undefined之间的差异和相似之处. 如果你对编程感兴 ...

  2. 有没有办法检查`null`和`undefined`?

    本文翻译自:Is there a way to check for both `null` and `undefined`? Since TypeScript is strongly-typed, s ...

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

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

  4. JavaScript typeof, null, 和 undefined

    JavaScript 中有三个特殊的值,它们分别是 typeof, null, 和 undefined.这三个值在 JavaScript 中都有着重要的作用,在实际开发中也经常会使用到. 首先是 ty ...

  5. JavaScript中null与undefined的比较

    这两种类型近乎相等,都表示空值,在实际的操作中console.log(null == undefined)会输出true.但是它们之间有些的差别的,主要从定义.字面意思.使用情况等考虑. 从最初的的区 ...

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

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

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

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

  8. javaScript学习笔记之typeof, null, 和 undefined之间的对比

    typeof 操作符 你可以使用 typeof 操作符来检测变量的数据类型. null 在 JavaScript 中 null 表示 "什么都没有". null是一个只有一个值的特 ...

  9. Javascript 中 null、NaN和undefined的区别

    1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型. 代码 var a1; var a2 = tr ...

最新文章

  1. IEEE年终AI大盘点:网友教会GPT-3骂人、DeepMind再造机器人
  2. 简历中的项目如何体现实战能力? 如何有技巧地描述你做过的 project?
  3. sand.A java_java中volatile关键字的含义(转)
  4. 获取当前窗口是否可见 document.visibilityState
  5. SQL Server - 在SQL Server中创建ASSEMBLY
  6. 函数的参数 2018-3-27
  7. this.$set 更新整个数组_学点算法(二)——有序数组二分搜索算法
  8. 找出2n+1个数中不成对的那个
  9. Unity碰撞和触发
  10. 【传智播客】Javaweb程序设计任务教程 黑马程序员 第一章 课后答案
  11. 条件运算符 JAVA
  12. 还在使用Window原始的CMD界面?教你一招进行界面完美优化
  13. Linux: ubuntu Appium连接手机
  14. iOS报错 之 The app delegate must implement the window property if it wants to use
  15. 使用Docker-compose 编排Maximo容器环境
  16. CPAL脚本自动化测试 ———— Signal Wait系列函数及使用
  17. 为什么建模要尽量用四边面?如何将三边面转化成四边面?
  18. 计算机网络——已知 IP 地址,求解子网的网络地址
  19. Matlab 高光谱影像信息熵/信噪比计算
  20. RequireJs配置

热门文章

  1. 算法--------数组------反转字符串中的元音字母
  2. 【Java源码分析】Vector源码分析
  3. Android.bp 语法浅析-Android10.0编译系统(八)
  4. Android 自定义控件开发入门(一)
  5. Java学习笔记25
  6. 【Java基础】序列化之serialVersionUID
  7. Flutter开发之爬坑集合(五)
  8. linux更改默认版本,linux - 将某个软件版本设为ubuntu中的默认版本 - Ubuntu问答
  9. uniapp启动页,底部虚拟按钮向上闪一下的问题
  10. php与ajax技术