JavaScript < ES5、ES6、ES7、… >前端面试题精选

JavaScript运算符和类型转换

2019-02-15  本文已影响0人  追逐_e6cf

一、运算符

  1. +-*/%**(es6 a**n:a的n次方)。
  2. 赋值运算:=+=-=*=/=%=**=
  3. 算数运算不存在分数。
  4. 在加号的任意一侧,出现字符串的时候就是字符串的拼接。
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>

二、比较运算和逻辑运算

  1. ><==!=>=<====!==
  2. ><==若是数值和"数字"作比较,会有类型转换。若是字符串作比较,按照ASCII码表顺序挨个作比较。
  3. 逻辑运算符&&||!
  4. 若逻辑运算符的两侧都是布尔值时:&&两侧都是true则返回true,||两侧都是假则返回假。
  5. 若逻辑运算符的两侧不是布尔值时:&&遇到假就停止,并返回当前值,运算到最后则返回最后一个值;||遇到真就停止,并返回当前值,运算到最后则返回最后一个值;!取到的是布尔值,除了六个假值,其他的取非结果都是false。
  6. 运算顺序:!>&&>||
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);
}

三、显示类型转换

  1. Number();不会改变原有的数据类型,而是把转换之后的结果返回出来。
  2. 数值,并不是所有数值类型的数据就是数,还有一个不是数:NaN。
  3. null 经过Number(null)运算后结果为0。
  4. true和false将分别转换为1和0。
  5. undefined,返回NaN。
  6. 如果带非数字的字符串,返回NaN。
  7. 如果字符串是空的(不包含任何字符),则将其转换为0。
  8. 数组 空数组经过Number(null)运算后结构为0,如果是 一个值,并且按照数学逻辑是正确的数,那么会转换成数值;数组中有多个值,则被解释成为NaN。
  9. String();和alert 表现一致,所有的数据类型都能转成字符串。
  10. 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);

四、parseFloatparseInttoFixed

  1. parseFloatparseInt如果空格不在字符串中间,在开始和结束的部分不会解释,从左往右进行解释,直到遇到不符合数学逻辑的字符位置,返回之前解释的数值类型,若开始就不符合数学逻辑,则解释为NaN。专门用于把字符串转换成数值
    都是忽略前导的空格
  2. parseFloatparseInt会把空数组解释成为NaN,数组中有多个值时,只解释第一个值,和Number不同。
  3. toFixed保留几位小数,会进行数值类型转换,成为了字符串,会四舍五入。
var a = [null,'345'];
console.log(parseInt(a));

var a = 2.128212;
console.log(a.toFixed(2));

五、隐式类型转换

  1. 其他类型转字符串 + ""
  2. 其他类型转数值 用*1/1 (null-->0 undefined-->NaN)。
  3. 其他类型转布尔 !!
  4. a++a=a+1不一样,a++会有类型转换。
var a = "123";
a = !!a;

var a = "123";
// a++;//124
a = a+1;//1231
console.log(typeof a);
上一篇 下一篇

猜你喜欢

热点阅读