我看到了这个帖子,但我没有看到JavaScript特定的例子.有一个简单string.Empty的JavaScript可用,还是只是检查的情况""?
如何确定变量undefined还是null?我的代码如下:
var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
//DO SOMETHING
};
Run Code Online (Sandbox Code Playgroud)
<div id="esd-names">
<div id="name"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
但是如果我这样做,JavaScript解释器会暂停执行.
我遇到过以下代码:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
Run Code Online (Sandbox Code Playgroud)
我对JavaScript很新,但是,从我在这里读过的其他问题来看,我的印象是这段代码没有多大意义.
如果在除了以外的任何上下文中访问未定义的变量,您将收到错误typeof.
更新:上述答案(引用)可能会产生误导.应该说"一个未声明的变量",而不是"一个未定义的变量".
正如我在Ryan♦,maerics和nwellnhof的回答中所发现的那样,即使没有为函数提供参数,也始终声明其参数的变量.这个事实也证明了下面列表中的第一项是错误的.
根据我的理解,可能会遇到以下情况:
调用该函数时没有参数,从而生成data一个未定义的变量,并引发错误data != null.
该函数专门用null(或undefined)作为其参数调用,在这种情况下data != null已经保护内部代码,使得&& data !== undefined无用.
该函数使用非null参数调用,在这种情况下,它将平凡地传递两个data != null 和 data !== undefined.
问:我的理解是否正确?
我在Firefox的控制台中尝试了以下内容:
--
[15:31:31.057] false != null
[15:31:31.061] true
-- …Run Code Online (Sandbox Code Playgroud) 相关的IEEE标准定义了一个数字常量NaN(不是数字),并规定NaN应该比较为不等于它自己.这是为什么?
我熟悉的所有语言都实现了这个规则.但它经常会导致严重的问题,例如当NaN存储在容器中时,NaN存在于正在排序的数据中等时的意外行为等.更不用说,绝大多数程序员都希望任何对象都等于自身(在他们了解NaN之前,令人惊讶的是他们增加了错误和混乱.
IEEE标准经过深思熟虑,因此我确信NaN的比较与其本身相同是很糟糕的.我只是想不通它是什么.
当我编写手表处理函数时,我检查newVal参数undefined和null.为什么AngularJS有这样的行为,但没有特定的实用方法?所以有,angular.isUndefined但没有angular.isUndefinedOrNull.手动实现并不难,但是如何扩展角度以在每个控制器中具有该功能?TNX.
编辑:
这个例子:
$scope.$watch("model", function(newVal) {
if (angular.isUndefined(newVal) || newVal == null) return;
// do somethings with newVal
}
Run Code Online (Sandbox Code Playgroud)
处理这种方式是否是普遍接受的做法?
编辑2:
JSFiddle示例(http://jsfiddle.net/ubA9r/):
<div ng-app="App">
<div ng-controller="MainCtrl">
<select ng-model="model" ng-options="m for m in models">
<option value="" class="ng-binding">Choose model</option>
</select>
{{model}}
</div>
</div>
var app = angular.module("App", []);
var MainCtrl = function($scope) {
$scope.models = ['Apple', 'Banana'];
$scope.$watch("model", function(newVal) {
console.log(newVal);
});
};
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
var sideBar = localStorage.getItem('Sidebar');
Run Code Online (Sandbox Code Playgroud)
我想检查sideBar是否已定义,而不是if语句中的null.我有点困惑,我知道有一个:sideBar == undefined和sideBar != null
但是我有一个很好的方法来对这两个内部的if进行测试:
if (??)
Run Code Online (Sandbox Code Playgroud) 我想对包含 undefined/null 和数字的数组进行排序,以便 undefined/null 值始终排在第一位:
function sorter(a, b) {
if (a == b) return 0;
if (a == undefined) return -1;
if (b == undefined) return 1;
return a - b;
}
Run Code Online (Sandbox Code Playgroud)
但是,当数组包含未定义的值时,它将成为最后一个元素
[-1, 0, 1, undefined, 2, 3].sort(sorter); // [-1, 0, 1, 2, 3, undefined]
Run Code Online (Sandbox Code Playgroud)
如果值为空,它会正确排序
[-1, 0, 1, null, 2, 3].sort(sorter); // [null, -1, 0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?由于 null == undefined,这不应该导致完全相同的顺序吗?
尝试使用时window.FormData出现以下错误:
The name 'FormData' does not exist in the current scope
Run Code Online (Sandbox Code Playgroud)
FileReader 也会发生同样的情况
我的javascript代码中的空检查似乎没有按预期运行.它是这样的:
if (myVariable) {
// Do things with my variable
}
Run Code Online (Sandbox Code Playgroud)
当我到达if语句的内部时,Chrome的java控制台说我正在尝试使用的值(myVariable)为null.也许我不理解if语句?抛出错误的具体行是
window.document.getElementById("myElement").innerText = myVariable
Run Code Online (Sandbox Code Playgroud)
提前致谢.
if(typeof (document.getElementById("courseId").value!=="undefined") || document.getElementById("courseId").value!==null)
{
Courseid = document.getElementById("courseId").value;
}
Run Code Online (Sandbox Code Playgroud) 你怎么OR用Javascript 写的?
示例:
if ( age **or** name == null ){
do something
}
Run Code Online (Sandbox Code Playgroud) javascript ×10
null ×5
undefined ×4
angularjs ×1
arrays ×1
ieee-754 ×1
is-empty ×1
jquery ×1
nan ×1
null-check ×1
object ×1
sorting ×1
typescript ×1
variables ×1