javascript中未定义的类型

Type of undefined in javascript?

本文关键字:类型 未定义 javascript      更新时间:2023-09-26

这不是一个实际问题,我只是需要一个解释。

我有以下代码:

var src = container.find('img').attr('src');
if(src === 'undefined') {
    alert('No src');
}

当我启动控制台并记录src时,它说它是未定义的,但警告没有被触发。调试这段代码证明了之前的行为是正确的。当我删除if语句中的"并保留未定义类型时,警报被触发。

另一方面,在我的代码下面,我有这一段:

var pathname = (window.location.pathname).split('/');
if(pathname[5] === 'undefined') {
    alert('Something...');
}

并且当控制台说pathname[5]未定义时,警报被正确触发。

因此,我认为在第一种情况下,undefined作为类型返回,在第二种情况下作为字符串返回。这是正确的吗?为什么会有这样的行为?

感谢所有聪明的答案!

既然src已经被声明了,你需要做的就是检查它的真实性:

if (!src) alert('no src');

如果变量可以有一个假值(空字符串,零,假),那么你应该检查undefinednull,如:

if (src === null || src === undefined)

或利用null == undefined

以来的类型转换
if (src == null)

您需要知道===运算符,它不仅检查变量的值,还检查变量的数据类型。

所以在第一种情况下,它不是得到真,因为在javascript undefined不是一个字符串。

所以尝试:

if(src === undefined) {
    alert('No src');
}

在第二种情况下,它仍然返回false。这里是JsFiddle Demo

试试这个:

var loc="/~svemirko/dreamhouse/admin/homepage/";
var pathname = (loc).split('/');
if(pathname[7] === undefined) {
    alert('Something...');
}

试试这样做:

var src = container.find('img').attr('src');
if(typeof(src) === 'undefined') {
    alert('No src');
}