JavaScript中有没有什么东西?

时间:2017-08-10 11:06:01

标签: javascript

这不是问题,只是个人的好奇心。

我发现了一个奇怪的边缘情况,我不知道我的大脑是否搞砸了,或者JavaScript是否缺乏这个。从返回也可以为null的字符串列的SQL-Query中,我想将它们放入数组中。但是,当字符串为空时,我希望这些数组为空。

如果我执行以下操作,则数组将包含 null 作为条目,而不是保持为空:

// Column A and B can be either a String or null
var sqlColumnA = sqlResults[i][1];
var sqlColumnB = sqlResults[i][2];

// Store them within arrays of an objects ONLY IF they are a String
var obj = {
    a : [sqLColumnA],
    b : [sqlColumnB]
};

为了绕过这个,我必须使用这样的三元运算符:

sqlColumnA === null ? [sqlColumnA] : []

显然它有效,但它让我思考。 JavaScript中有 Nothing 之类的东西吗?变量不仅仅是null,而是字面上的空?或者我不能绕过三元运算符解决方案?

5 个答案:

答案 0 :(得分:1)

如果你想要一个实际的(如零长度)数组,你需要根据你的问题使用三元运算符(或类似的语法)。没有办法避免它。

实际上,javascript至少有两种方式来定义"不存在" - Both null and undefined

答案 1 :(得分:1)

另一种方法可能是在数组上使用.filter(Boolean)来消除所有虚假值(nullundefined''NaN0和空白)

var arr = [null, 1, 2, 3, '', undefined, 'a', NaN,,, 0, 'b', {}];

console.log(arr.filter(Boolean));

答案 2 :(得分:0)

变量可以是undefined

void 0 example.

答案 3 :(得分:0)

是的,有一个'没有',它被称为undefined

var empty;
console.log(empty);

输出:undefined

https://jsfiddle.net/96h7vn2z/

答案 4 :(得分:0)

您可以使用不是null或不'null'的值作为字符串。

console.log([null, 'null', '', 'value'].map(v => v !== null && v !== 'null' ? [v] : []));