javascript - 当函数的参数为“未定义”或“空”或“”(空字符串)时,如何设置它的默认值?
问题描述
colorX 是我的某个函数的参数。
colorX = typeof colorX !== ('undefined' || 'null' || '') ? colorX : 'abc';
对于“未定义”,我将 abc 作为值。但是当我将 null 或 'null' 或空字符串作为参数输入传递时。我收到错误。
null和'null'之间有什么区别?
解决方案
解释
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 值表示为类型标记和值。对象的类型标签是
0
。null
表示为 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
.
我们可以简单地做:
colorX = colorX || 'abc';
正如@ivar 声称的那样。
推荐阅读
- c++ - 在 C++ 中使用 qsort 时运行失败错误
- javascript - Incorporating if statement with JavaScript objects that has nested arrays with multiple values
- javascript - 如何访问 JavaScript 数组中的基础对象数组?
- apache-spark - 4 个主题的 Kafka 消费者代码
- c++ - 奇怪的体素锥追踪结果
- angular - 利用浏览器缓存 - 带有 CDN 的 nginx
- c# - 如何访问 Lambda 环境变量?
- java - Spring Kafka 类不在可信包中
- sql - 刷新 SQL Server 表
- javascript - 使用 react js 渲染 youtube 视频