基础数据类型
Number、Bigint、String、Boolean、Object、null、undefined、symboltypeof 1 //"number"
typeof 10n // "bigint"
typeof '1' //"string"
typeof true //"boolean"
typeof null //"object"
typeof undefined //"undefined"
typeof null //"object"
typeof Symbol('id') //"symbol"
逻辑运算符
逻辑运算符:||(或),&&(与),!(非)优先度 : !> && > ||
逻辑或( || )
//逻辑|| 返回第一个为真的值
alert(''||'2') //2
//逻辑|| 判断条件全为false时,返回最后一个值
alert(null||undefined||'') //''
//用处:从多个值中找到为true的值
let a = ''
let b = ''
let c = 'test'
a || b || c || 'default' //test default为默认值,当abc都为假时返回
//逻辑|| 短路 找到第一个为true的值,不再执行其后的代码
null||'2'||alert('3') //2
逻辑与( && )
//逻辑&& 返回第一个为假的值,都为真则返回最后一个值
2 && 3 //3
3 && '' && 6 //''
//作用: 找到为假的值
let a = 'a'
let b = 'b'
let c = ''
a && b && c //''
逻辑非( ! )
//特殊用法:返回变量的boolean类型的值
!!'test' //true
空值合并运算符
空值合并运算符“??”,可以看成是三木运算符的简写,不过??只判断null和undefined(未定义的变量为假)。用法:a ?? b返回第一个不为null且不为undefined的变量。用法与||有点相同,但是 || 返回的是第一个 真 值(例如数字0为假,但是??中会返回数字0)。??没有括号的情况下不能与||和&&混用。
//返回第一个不为null且不为undefined的值
let x = a ?? b
//可以看作是
let x = ( a !== null && a !== undefined ) ? a : b;
//与||的区别 : ??返回第一个被定义的值,||返回第一个为真的值或者最后一个为假的值
''||0||'1' //'1'
''??0??'1' //''
switch关键字特殊点
需要注意的是,switch的比较是严格比较(===),必须类型与值相等才会执行。switch (x) {
case a :
//do something
break;
case b:
case c:
//dosomething
break;
default:
//do something
}
函数声明和函数表达式
函数声明:函数声明可以在被声明前调用。脚本准备执行前,会先找全局函数声明的函数,由内部算法决定。test();//正常执行
function test(){
//dosomething
}
函数表达式:只有执行到时才会被声明。
test();//报错
//函数表达式
let test = function(){
//dosomething
}
test()//正常执行