逻辑运算符,返回值是,最后运算的表达式的返回值
|| 一真全真 全假全假
&& 一假全假 全真为真
! 你真我假,你假我真
运算规律
&& 从左往右计算,如果表达式返回值为true,或者结果隐士转换为true,那么就继续运算下一个表达式,直到第一个false,返回该表达式运算结果,如果都没有;那么返回最后一个表达式运算结果;
|| 从左往右计算,如果表达式返回值为false,或者结果隐士转换为false,那么就继续运算下一个表达式,直到第一个true,返回该表达式运算结果,如果都没有;那么返回最后一个表达式运算结果;
连接运算符
+ 犹如字符串使用;计算连接运算符
var str = '1'+1; //11
字符串拼接
数据类型转化分为显示转化 和隐士转换;
其他类型转为boolean 类型;
除了null undefined ‘’ false 0 转为布尔为false,其他全部是true;
Boolean() 作用:将其他类型数据转换为boolean 类型
() 中内容参数
标点符号优先级
括号成员最高级,全体单目排老二;乘除余三,加减四
移位五,关系六,等于不等于排老七,逻辑八,赋值九,逗号成员排最低;
var res = "" == [];
// = '' == ''
// = true
var res = "123" > "顾";
// = 1 > 顾的unicode编码值
// =false
console.log(res)
// = false
var res = [] > {};
console.log(res)
// = false
var res = { name: "yanqi" } + 1;
console.log(res)
// = [object,Object] + 1;
// = [object,Object]1
console.log(undefined > 1);
// = 0 > 1
// = false
console.log(undefined == undefined);
// = undefined undefined等于undefined
console.log(NaN === NaN);
// =false 因为NaN 不能运算;所有false NaN不等于NaN
console.log(1 > "");
// = true
console.log([] == ""); //空字符等于空字符
// = true
console.log([] === "");// 因为数据类型不等 false
// = false
console.log(true >= "true");// 1>= NaN
// = false
console.log(null == null);
// = true
特殊:
console.log('' == null); // false 特殊的
console.log([] == null); // false 特殊的
console.log('ddd' == null); // false 特殊的
console.log({} == null); // false 特殊的
console.log(12 == null); // false 特殊的
console.log(undefined == null); // true 以为内意义相同
console.log(undefined === null); // false 类型不等
字符串比较
var res = '你'.charCodeAt();
console.log('顾'.charCodeAt());
1.字符串的比较大小字符长度无关
2.从第一个字符的 unicode 编码值或者asicma值进行比较,直到比较出一个大小位置,第一个没结果就第二个……
3.空字符值为0
数据类型转化
其他类型转为number 显示转化,隐士转化
显示转换 Number() parsint() parsFloat() 重点记住以后很重要
1.注意:不要使用浮点数进行比较和运算
2.正常只有第一个小数点是有效的,之后都是无效的
var res = 0.1+0.2===0.3
e3 科学计数法 10的3次方
var num = 12e3;// 121010*10
NaN
当一个数据,非要是数值型,但没有任何一个数值可以表示,为NaN
2.NaN 永不等于NaN
3.NaN与任何数操作运算都是NaN