运算符
数据类型的加减乘除
1.加法
①数字+数字
console.log( 1 + 1 );
console.log( 2 + 2 );
js存储数据是IEE47 -> 双精度浮点数
console.log( 0.1 + 0.2 );注意:不等于0.3
浮点数通用方法:全部乘以100 /100
console.log( 1.1 * 100 )/100;
②NaN Infinity - Infinity
console.log( NaN * 0 )
console.log( Infinity - 1 );//Infinity;
console.log( -Infinity / 1);//-Infinity;
console.log( Infinity + -Infinity );//NaN;
console.log( NaN + Infinity );//NaN;
console.log( NaN + -Infinity );//NaN;
③ 字符串 + 字符串 = 字符串拼接
var str1 = "123";
var str2 = "456";
console.log( str1 + str2 ); //123456;
console.log( str1, str2 ); //123 456;
④数字+字符串
(字符串是老大,谁见谁变) 任何数据类型( 除undefined和null )和字符串进进行加法运算都会转为字符串 。
console.log( 1 + '2' );//12
console.log({name: '小明'} + '123' );//{name: '小明'} -> [object Object] ,//此时结果为[object Object]123;
console.log( {} + '123' );//[object Object]123;
console.log( undefined + 'abc' );//undefinedabc;
console.log( null + 'abc' );//nullabc;
console.log( '1' + [1,2,3] );//11,2,3;
console.log( [1,2,3] + '1');//12,3,1;
⑤ undefined和null 的运算
console.log( undefined + null );//NaN;
console.log( undefined + 1 );//NaN(因为undefined转化为数字为NaN).
console.log( null + 1 );//1(因为null转化为数字为0.);
console.log( null + 'abc' );//nullabc;
console.log( undefined + 'abc' );//undefinedabc;
⑥ Object Array 的运算
console.log( {age: 5} + 5 );//[object Object]5;
console.log( [] + 1 );//1;
console.log( undefined + [{}] );//[object Object]undefined;
console.log( null + [] );//null;
console.log( null + 2 );//2;
console.log( null + '2' );//null2;
⑦加法总结
数字 + 数字 => 数学运算
undefined和null 遇数字转数字 遇字符串转字符串
Object , Array 计算加法前 先转为字符串
‘字符串’ + 其他数据类型 = 字符串是爹 .
2.减法
①数字—数字
console.log( 2 - 3 );
console.log( 0.4*100 - 0.3*100 );
console.log( Infinity - 1);
console.log( -Infinity - 1);
console.log( NaN - 1 );
console.log( Infinity - Infinity );//NaN
console.log( '123.1a' - 1 );//NaN(因为123.1a不是纯数字,转化成了NaN);
②Obiect的运算
console.log( {} -100 );//NaN
③Array的运算
console.log( ['1'] - 1 );//0;
3.乘法
console.log( '2' * '3' );//6
console.log( 'a' * 2 );//NaN
console.log( null * 1 );//0
console.log( {} * 2);//NaN
console.log( true * 20 );//20
console.log( false * 2 );//0
console.log( false * '2' );// 0
4.除法
console.log( 9 / 2 );//4.5
console.log( Infinity / Infinity );//NaN
console.log( -Infinity / -Infinity );//NaN
console.log( Infinity / -Infinity );//NaN
console.log( 2 / 0 );//Infinity
console.log( -2 / 0 );//-Infinity
console.log( 0 / 2 );//0
console.log( 1 / 3 ); //0.3333333333333333
console.log( 2 / [] );//Infinity
console.log( true / false );//Infinity
console.log( true / null );//Infinity
console.log( true / {} );//NaN({}转化成NaN)
5.余数(%)
1.所有数据类型转为数字 。
2.求余数,如果除法的结果是NaN,余数就是NaN, 无穷大 % 数字 结果 NaN 。
console.log( 5 % 2 );//1
console.log( [5] % 2 );//1
console.log( -Infinity % 2 );//NaN
数据类型的递增递减
1递增(++)
①数字
var num = 123;
++num;//前置
num++;//后置
console.log( ++num );//124
console.log( num++ );//124
②Object和Array
var ob = {x:"123"};
++ob;
console.log(ob);//NaN
var arr=[]
++arr;
console.log(arr);//1
总结
1,++操作符如果是前置的,在进行运算的时候先自增再运算。
var num = 123;
var result = ++num + 1;
console.log (num);//124
console.log( result );//125
2,++操作符如果是后置的,在进行运算的时候先运算再自增 。
var num = 123;
var result = num++ + 1;
console.log (num);//124
console.log( result );//124
2.递减(–)
原理和递增一样(见上)。
布尔值
1.||或
||
console.log( 0 || '花花' );//花花
console.log( null || '' || undefined || false );//fasle
console.log( null || '' || undefined || 1 );//1
2.&&与
&& 通关游戏
console.log( undefined && 2 );
console.log( 1 && 2 && 'false' && {name:'小明'} );//此时在第三关。
3 !非
console.log(!0);//true
注意: 0 NaN undefined null false “” 转Boolean都是false. 除了以上六个,其他的所有数据用!时2,结果都为false 。
大小比较(>=)
结果返回ture和false.
数字比数字 = 数学运算
字符串比字符串 = 字符编码比较(比较字符编码时,一个一个比较)
字符串比数字 = 数学运算
对象不管和什么比较都先转为字符串(注意:对象和所有数字比较的时候返回的结果都是false)
任何数据类型和数字比较都转为数字
布尔值,undefined,null转为数字
是否相等
总结:①字符串比较等于比值,(即判断里面的是否相等)
②数字和数字比较,即直接比值,无穷大和负无穷大都等于自己,NaN不等于它自己。
③布尔值转数字。
④字符串和数字比,字符串转为数字。
⑤undefined和null相等。
⑥undefined和null不会进行转化。
⑦对象和字符串比较=对象转字符串。
⑧对象和数字比较=对象转数字。
console.log( 'hello world' == 'hello world' );//true
console.log( 99 == 99 );//ture
console.log("3"==3);//true
console.log( undefined == null );//true
全等(===)
即要数据类型相同也要值相同
其余字符
*= += -= /= %=
var num = 2;
console.log( num *= 2 );
console.log( num );//4
var num1 = 3;
num1 += 2;
console.log( num1 );//5