一、运算符
-
+
、-
、*
、/
、%
、**
(es6 a**n:a的n次方)。
- 赋值运算:
=
、+=
、-=
、*=
、/=
、%=
、**=
。
- 算数运算不存在分数。
- 在加号的任意一侧,出现字符串的时候就是字符串的拼接。
var a = 1;
a /= 2;
a %= 2;
a **= 2;
<div id="box">
<p class="on"></p>
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<script>
var oBox = document.getElementById('box'),
oP = document.getElementsByTagName('p'),
index = 0;
document.onclick = function(){
oP[index].className = '';
index++;
// if (index>4) {
// index = 0;
// }
index = index%oP.length;
oP[index].className = 'on';
}
</script>
二、比较运算和逻辑运算
-
>
、<
、==
、!=
、>=
、<=
、===
、!==
。
-
>
、<
、==
若是数值和"数字"作比较,会有类型转换。若是字符串作比较,按照ASCII码表顺序挨个作比较。
- 逻辑运算符
&&
、||
、!
。
- 若逻辑运算符的两侧都是布尔值时:
&&
两侧都是true则返回true,||
两侧都是假则返回假。
- 若逻辑运算符的两侧不是布尔值时:
&&
遇到假就停止,并返回当前值,运算到最后则返回最后一个值;||
遇到真就停止,并返回当前值,运算到最后则返回最后一个值;!
取到的是布尔值,除了六个假值,其他的取非结果都是false。
- 运算顺序:
!
>&&
>||
。
var a = "abc",
b = "acd";
console.log(a>b);
var a = 3>2 && 1>3;
var a = 1>2 || 3>2 && 2>1;
var a = true;
a = !a;
console.log(a);
//虽然没找到 但是返回的是一个空的类数组 是真的
document.getElementsByTagName('p');
console.log(document.getElementById('box'));//null
var a = 5 && 1 && 6;
console.log(a);
var b = "" || 2 && 0;
console.log(b);
var c = "哈哈哈哈";
c = !c;
console.log(c);
var n = 2;
3>n && fn();
function fn(){
console.log(1);
}
三、显示类型转换
-
Number();
不会改变原有的数据类型,而是把转换之后的结果返回出来。
- 数值,并不是所有数值类型的数据就是数,还有一个不是数:NaN。
- null 经过
Number(null)
运算后结果为0。
- true和false将分别转换为1和0。
- undefined,返回NaN。
- 如果带非数字的字符串,返回NaN。
- 如果字符串是空的(不包含任何字符),则将其转换为0。
- 数组 空数组经过
Number(null)
运算后结构为0,如果是 一个值,并且按照数学逻辑是正确的数,那么会转换成数值;数组中有多个值,则被解释成为NaN。
-
String();
和alert 表现一致,所有的数据类型都能转成字符串。
-
isNaN();
返回布尔值true
就是NaN "内部调用了Number()"。
var a = '123';
// var a = function(){};
// var a = undefined;
// var a = ["123","456"];
// var a = null;
var b = Number(a);
console.log(a);
console.log(typeof a);
console.log(b);
console.log(typeof b);
var a =NaN;
console.log(a === a);//false
var a = NaN;
console.log(isNaN(a));//true
var a = '';
// var b = Boolean(a);
var b = !!a;
console.log(b);
console.log(typeof b);
四、parseFloat
、parseInt
、toFixed
-
parseFloat
、parseInt
如果空格不在字符串中间,在开始和结束的部分不会解释,从左往右进行解释,直到遇到不符合数学逻辑的字符位置,返回之前解释的数值类型,若开始就不符合数学逻辑,则解释为NaN。专门用于把字符串转换成数值
都是忽略前导的空格
-
parseFloat
、parseInt
会把空数组解释成为NaN,数组中有多个值时,只解释第一个值,和Number不同。
-
toFixed
保留几位小数,会进行数值类型转换,成为了字符串,会四舍五入。
var a = [null,'345'];
console.log(parseInt(a));
var a = 2.128212;
console.log(a.toFixed(2));
五、隐式类型转换
- 其他类型转字符串
+ ""
。
- 其他类型转数值 用
*1
、/1
(null-->0 undefined-->NaN)。
- 其他类型转布尔
!!
。
-
a++
和a=a+1
不一样,a++
会有类型转换。
var a = "123";
a = !!a;
var a = "123";
// a++;//124
a = a+1;//1231
console.log(typeof a);
网友评论