美文网首页
数据类型运算符流程控制语句(进阶2)

数据类型运算符流程控制语句(进阶2)

作者: 饥人谷_js_chen | 来源:发表于2017-01-25 10:42 被阅读0次

    1. JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?

    1. JavaScript定义了6种数据类型:数值(number)、字符串(string)、布尔(boolean)、undefined、null、对象(object)、Symbol(ES6引入)
    2. 原始类型:number, string, boolean,Symbol(ES6引入)
    3. 复杂类型:对象(对象又包括侠义对象、数组、正则表达式、函数)
    4. 区别:一个对象可以包含多个原始类型值(或对象值)的合成;而原始类型是最基本的数据类型,不能再细分

    2. typeof和instanceof的作用和区别?

    1. typeof:
      • 可以判断数据类型,它返回表示数据类型的字符串(返回结果只能包括number,boolean,string,function,object,undefined);
      • 可以使用typeof判断变量是否存在(如if(typeof a!="undefined"){...});
      • 对于Array、Null、正则表达式等特殊对象,会返回object
    2. instanceof:
      • 用于判断一个变量是否是某个对象的实例
      • 返回true和false
      • 可以用来判断数组
        if( x instanceof Array ){...}

    3. 如何判断一个变量是否是数字、字符串、布尔、函数

    //判断数字
    let a = 1;
    console.log(typeof a);
    if(typeof a === "number"){
      console.log("a is number");
    }
    //判断字符串
    if(typeof b==='string')
    //判断布尔
    if(typeof c==='boolean')
    //判断函数
    if(typeof f==='function')
    

    4. NaN是什么? 有什么特别之处?

    -  NaN表示非数字,它是数字类型,but not a Number
    -  NaN和任何值都不相等,包括自己
    

    5. 如何把非数值转化为数值?

    -  number()
    -  parseInt()
    -  parseFloat()
    -  上边3种方法的参数
        -  当只有一个参数时:表示将参数当成10进制转换10进制
        -  当有两个参数时:表示将第一个参数当成第二个参数所表示的进制数,转换成10进制数
    

    6. ==与===`有什么区别

    • 前者时近似相等:会将数据转化成预期类型,再进行比较
    • 后者时绝对相等:先判断类型是否相等=同,若类型相同才进行值的比较
    • 如果javascript预期某个位置是布尔值,如下6个值会被转换成false:""、undefined、NaN、0、null、false,其它值都会转换为true

    7. break与continue有什么区别

    • break:直接跳出循环,即循环停止
    • continue:直接进入下一个循环,不会走当前循环后面的代码

    8. void 0 和 undefined在使用场景上有什么区别

    • void 0:返回undefined
    • undefined:表示未知类型,是一个全局对象的属性,但在ES5和ES6中,可以在局部作用域内赋值。(在低版本 IE 中能被重写)
    function f(){
      var undefined = 10;
      console.log(undefined);
    }
    f();//打印10
    
    • 区别:void 0返回值一定是undefined,undefined却可以在局部作用域内被赋其它值

    9. 以下代码的输出结果是?为什么?

    console.log(1+1);    
    console.log("2"+"4");  
    console.log(2+"4"); 
    console.log(+"4");
    
    1. console.log(1+1);

    输出2,+号两边都是数字时,做数字加法运算

    1. console.log("2"+"4");

    输出"24",+号的任意一边是字符串,则做字符串拼接

    1. console.log(2+"4");

    输出"24",+号的任意一边是字符串,则做字符串拼接

    1. console.log(+"4");

    输出4,加号只有后面有数据,则直接将它转换为数字

    10. 以下代码的输出结果是?

    var a = 1;  
    a+++a;  
    typeof a+2;
    

    输出"numbe2"(严格的说,后面得用console.log打印才能看到输出结果)

    11. 以下代码的输出结果是? 为什么

     var a = 1;
     var b = 3;
     console.log( a+++b );
    

    输出4;因为++比+的优先级高,所以相当于(a++)+b=(1++)+3=1+3=4

    12. 遍历数组,把数组里的打印数组每一项的平方

    var arr = [3,4,5]
    

    代码:

    var arr = [3,4,5];
    for(let i=0;i<arr.length;i++){
      console.log(i*i);
    }
    

    13. 遍历 JSON, 打印里面的值

    var obj = {
     name: 'hunger', 
     sex: 'male', 
     age: 28 
    }
    

    代码:

    for (let key in obj){
      console.log(obj[key]);
    }
    

    14. 以下代码输出结果是? 为什么 (选做题目)

    var a = 1, b = 2, c = 3;
    var val = typeof a + b || c >0
    console.log(val) 
    
    var d = 5;
    var data = d ==5 && console.log('bb')
    console.log(data)
    
    var data2 = d = 0 || console.log('haha')
    console.log(data2)
     
    var x = !!"Hello" + (!"world", !!"from here!!");
    console.log(x)
    

    输出:

    // typeof a + b || c >0 ==> ((typeof a)+b)||(c>0) ==> ("number"+2)||true ==>"number2"||true==>"number2"
    "number2" 
    "bb"
     //d ==5 && console.log('bb') ==> true && undefined ==> undefined
    undefined
    "haha"
    //d = 0 || console.log('haha') ==> 0 || undefined ==> undefined
    undefined 
    2
    

    相关文章

      网友评论

          本文标题:数据类型运算符流程控制语句(进阶2)

          本文链接:https://www.haomeiwen.com/subject/eestittx.html