作者:蓝紫藤田_835 | 来源:互联网 | 2023-09-16 22:50
刚学了一些Markdown的基础语法,试着用一下。相干文档:Markdown基础语法合营基础运用相同点:null和undefined都是js的基础数据范例扩大:JS的6种基础数据范
刚学了一些 Markdown 的基础语法,试着用一下。
相干文档:
Markdown基础语法合营基础运用
相同点:
不同点:
let i = null;
console.log(i);
// null
let j;
console.log(j);
// undefined
可见:
null 代表变量有值,值为 空 , 且该值是经由过程 变量赋值 取得的;
undefined 代表声清楚明了变量,但没有为其赋值。
综上:
undefined == null;
// true
undefined !== null;
// true
运用 typeof 考证一下:
typeof undefined;
// "undefined"
typeof null;
// "object"
typeof NaN;
// "number"
Emm…,有点懵逼,确切考证了undefined !== null
,不过…
null
的范例是object
?! ( 你不是js的基础数据范例吗? )
NaN
的范例是number
?! ( 你全称不是叫 “Not a Number” 吗? )
事实上就是这么皮,而且你还会发明:
!!NaN === false;
// true
NaN == false;
// false
NaN == 0;
// false
以至:
NaN == NaN;
// false
NaN的特征就是云云:
- NaN是number范例;
- NaN不即是任何值;
- 无效运算时会发生NaN,比方
parseInt('abc')
- 可用
isNaN()
推断一个值是不是是NaN
!!
是个很好用的“运算符”,它的用处是推断恣意值在做if前提推断时的逻辑值
(而非介入逻辑运算时的逻辑值
,下文会提到),比方:
!! ""
// false
"" == false
// true
!! 0
// false
0 == false
// true
然则,万万不要以为!!运算效果
为false,== false
就建立,比方:
!! undefined;
// false
undefined == false;
// false
!! undefined === false;
// true
!! null;
// false
null == false;
// false
!! null === false;
// true
!! NaN;
// false
NaN == false;
// false
!! NaN === false;
// true
另一点须要注重的是,它不做为介入逻辑运算时的逻辑值
,比方:
!! undefined;
// false
/* 效果是undefined,而不是false */
undefined && 'a';
// undefined
false && 'a';
// false
希望你还没看蒙。。至于为何typeof(null) === 'object'
Emm。。跑题了,我们接着说 Null vs. Undefined
罕见运用场景:
===(严厉即是) 和 ==(即是) 分别在什么时刻运用:
我们都晓得在做逻辑推断时,== 会强迫转换用于比较的两个值的范例;而在现实开辟中,以下状况用 == ,其他时刻都用 === 即可
if (obj.a == null) {
// 这里相当于 obj.a === null || obj.a === undefined;
// 这也是jquery源码中引荐的写法
}
ES6函数默许参数的完成:
连系上文,null 是有值的,且值为 空,可经由过程赋值赋给变量
let logHi = (param = 'hello' ) => {
console.log(param);
};
/* 默许值见效 */
logHi();
// "hello"
/* 赋值挪用 */
logHi('world');
// "world"
/* undefined时,默许值见效 */
logHi(undefined);
// "hello"
/* null作为值,赋值挪用 */
logHi(null);
// null
/* NaN作为值,赋值挪用 */
logHi(NaN);
// NaN
倘使函数如许写:
let cOnsoleHi= (param) => {
param = param || 'hello';
console.log(param);
};
/* 默许值见效 */
consoleHi();
// "hello"
/* 赋值挪用 */
consoleHi('world');
// "world"
/* undefined时,默许值见效 */
consoleHi(undefined);
// "hello"
/* null作为值为falsy */
consoleHi(null);
// "hello"
/* NaN作为值为falsy */
consoleHi(NaN);
// "hello"
参考文献:
Javascript — Null vs. Undefined
题外话:难免想起一篇文章,虽然联络不大
趣文:编程现实上是文科