Javascript “的价值究竟是什么?”;未定义的“;?
我试图捕获某个变量的值,如果它为null或未定义,则执行某些操作Javascript “的价值究竟是什么?”;未定义的“;?,javascript,jquery,Javascript,Jquery,我试图捕获某个变量的值,如果它为null或未定义,则执行某些操作 $(".change-engineer").change(function (e) { var prevContactID = $(this).data('prev-value'); alert(prevContactID.value); // this shows "undefined" if (prevContactID.value === null) { // we nev
$(".change-engineer").change(function (e) {
var prevContactID = $(this).data('prev-value');
alert(prevContactID.value); // this shows "undefined"
if (prevContactID.value === null)
{
// we never get here
}
if (prevContactID.value === "undefined")
{
// we never get here
}
$.ajax({
type: 'POST',
url: '@Url.Action("ChangeProposalEngineer", "RequestForQuotes")',
data: { "prevContactID": prevContactID },
cache: false,
complete: function (data) {
...
}
});
});
在服务器端,我可以在ChangeProposalEngineer
上设置断点,prevContactID
的值为“null”
但在客户端,这是:
alert(prevContactID.value)代码>弹出“未定义”。但是,当if-then的值为空时,我似乎不知道如何进入它。未定义的的确切值是未定义的
if(prevContactID === undefined)
未定义是全局对象的属性,即它是全局范围内的变量。未定义的初始值是未定义的原语值
$(".change-engineer").change(function (e) {
var prevContactID = $(this).data('prev-value');
alert(prevContactID.value); // this shows "undefined"
if (prevContactID.value === null)
{
// we never get here
}
if (prevContactID.value === "undefined")
{
// we never get here
}
$.ajax({
type: 'POST',
url: '@Url.Action("ChangeProposalEngineer", "RequestForQuotes")',
data: { "prevContactID": prevContactID },
cache: false,
complete: function (data) {
...
}
});
});
在现代浏览器(JavaScript 1.8.5/Firefox 4+)中,根据ECMAScript 5规范,undefined是一个不可配置、不可写的属性。即使不是这样,也要避免覆盖它
阅读此评论后更新了答案
它也是未定义的,因为prevContactID是一个字符串。字符串没有“value”属性。它们是价值观Taplar
这是因为您严格地将(==)与字符串“undefined”进行比较,而不是将undefined
作为文本进行比较。顺便说一句,未定义与无值相同。而null是一个值
编辑正如Felix所建议的,undefined也是一个值。对如果我说“undefined是尚未定义或未分配任何值的变量的默认值”,那就更好了。不要检查字符串“undefined”
。检查:
或者,一般检查,包括null
和undefined
:
if(!prevContactID.value) {
// we never get here
}
<> P>所有的答案都是有效的,但我认为值得指出的是,将它与一个字符串进行比较是完全正确的。在比较之前,你唯一缺少的是<代码>类型> <代码>,考虑下面的
if(typeof prevContactID.value === "undefined") {
}
这是可行的。undefined
是javascript中的一个特殊变量。请尝试在不带任何引号的情况下使用它。prevContactID.value===undefined
很简单!undefined
本身就是一个值。还有一个变量undefined
的值是undefined
“
另一方面,它是一个字符串文本,产生一个字符串值。另外,它是未定义的,因为prevContactID是一个字符串。字符串没有“value”属性。它们是值。“顺便说一下,未定义与缺少值相同。而null是一个值。”。但是,它是在某些情况下隐式创建的(例如访问不存在的属性)。undefined==“undefined”
的计算结果为false
,即使使用非严格比较也是如此。第二个选项对显示的代码最有意义。第三个选项,当情况认为null
和undefined
在功能上等同(相当常见)时,应与=
进行比较,而不是==
,因为在=
规则下null
和undefined
的值是相同的。