计算机进行自动数据类型转换:不同数据类型之间没有办法进行运算,将数据转成同一数据类型,再进行计算。
其中一个操作数是字符串,运算符是+号,别的数据类型转换成字符串,两个字符串会拼接起来。 alert('hello' + 100);//hello100 alert('hello' + true);//hellotrue alert('hello' + NaN);//helloNaN alert('hello' + undefined);//helloundefined alert('hello' + 'de');//hellode 任何数据和字符串做+以外的操作,那么字符串要先转成数字再去进行运算。(100 - "20"结果为80)如果字符串是一个纯数字字符组成的字符串,转成对应的数字;
如果字符串中含有除数字外的字符,转成NaN, NaN和任何数据运算都是NaN ;
alert(100 - '20');//相当于100-20 结果为80 alert(100 -"20a");//'20a'转换成数字为NaN,所以结果为NaN 除字符串以外的数据,进行算术运算的时候,先转成数字,再进行运算 alert(10 + true);//true=>1 alert(10 +false); //false=>0 alert(100 - NaN); //结果NaN alert(100 -undefined);//结果NaN alert(100 -null); //结果100 null=>0注意:
<1>计算机不会进行小数运算 <2>在js中除数能为0
alert(0.8-0.1) alert(10 / 0);//Infinity alert(-10 / 0);//-Infinity Infinity是一个数字,可以跟数字运算 ,结果总是无穷大。(4)NaN, ==返回false,!=返回true,且NaN与自身不等。
alert(10 == "10a" );//false alert(10 != "10a");//true alert("10a" == NaN);//false=== 恒等 必须数字和数据类型都相同,才返回true
注意:Number(null)是0;Number(undefined)是NaN; 但是null == undefined是true.
与运算:
&& (表达式1 && 表达式2 ) 只有当两个表达式都为true时,整个表达式才为真。 注意短路操作:只要左边一个为假,整个表达式就为假,不会再运行右边的代码。比如 10<5 && alert(num); 不会报未声明变量num的错误,因为右边不执行。或运算:
|| (表达式1 || 表达式2) 只有当两个表达式都为false时,整个表达式为假。 (同样表达式1为真的话就会不在运行表达式二,直接得出整个表达式为true)非运算:
!表达式 将表达式的数据类型转换为布尔值(非0即真,非空即真),然后再取反。对原来变量进行加1操作 ,先取a得值作为a++表达式得值 ,再对a加一
++a:对原来变量进行加1操作,先对a加一,再将a的值作为++a的表达式。
var a = 5; alert(a++);//5 alert(++a);//7 上一语句先将a的值作为a++的值输出,再对a加一变成6,此句将a加一变成7,再讲a得值7作为++a的值输出。 a- - 、 - -a对原来变量进行减1操作
