首页 > 解决方案 > 当函数的参数为​​“未定义”或“空”或“”(空字符串)时,如何设置它的默认值?

问题描述

colorX 是我的某个函数的参数。

colorX = typeof colorX !== ('undefined' || 'null' || '') ? colorX : 'abc';

对于“未定义”,我将 abc 作为值。但是当我将 null 或 'null' 或空字符串作为参数输入传递时。我收到错误。

null和'null'之间有什么区别?

标签: javascriptfunctionparametersnullundefined

解决方案


解释

null对比'null'

使用 时typeof,它需要类型的字符串版本,例如'undefined', 'function', 'bigint', 等等。但是,特别是对于null它作为对象起作用的类型:

console.log(typeof null); // expected output: object
console.log(typeof 'strExample'); // expected output: string

// We can return a boolean by doing so:

let variable = 10;
console.log(typeof variable === 'string'); // expected output: false

关于为什么可以在MDN上找到解释:

在 JavaScript 的第一个实现中,JavaScript 值表示为类型标记和值。对象的类型标签是0null表示为 NULL 指针(0x00在大多数平台中)。因此,null有 0 作为类型标记,因此typeof返回 value "object"。(参考

提出了针对 ECMAScript 的修复(通过选择加入),但被拒绝了。它会导致typeof null === 'null'.

在任何其他情况下,'null','undefined''string'将被标识为字符串,因为它们被包围在'''s 中,这就是 @reyno 所指的。

typeof 在此处查看所有可接受的值。

检查是否为空

// null will be identified as an "object" type; checking
// null with typeof is redundant as {} can be the same as null.

console.log(typeof null); // expected output: object
console.log(typeof {}); // expected output: object

// so we can just do:

let colorX = null;
console.log(colorX === null); // expected output: true

结果代码

由于虚假值可以是以下任何一种:

此外false,可能的假表达式有:null, NaN, 0, 空字符串 ( "") 和undefined.

MDN

我们可以简单地做:

colorX = colorX || 'abc';

正如@ivar 声称的那样。


推荐阅读