进阶任务2

作者: 饥人谷_zhangfan | 来源:发表于2017-05-30 15:37 被阅读0次

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

    • 数值(number):包括整数和小数
    • 字符串(string) :字符组成的文本
    • 布尔值(Boolean):true(真)和false(假)两个特定值
    • undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
    • null:表示无值,即此处的值就是“无”的状态。
    • 对象(object):各种值组成的集合

    我们将数值、字符串、布尔值称为原始类型,对象为复杂类型,而undefined和null,一般将它们看成两个特殊值。区别就是原始类型是最基本的数据类型,不能再细分了,而对象往往是多个原始类型的集合,可以看成是一个存放各种数据的容器。

    typeof和instanceof的作用和区别?##

    typeof 返回一个数据原始的数据类型,结果是一个字符串,可以用typeof 数据的方式判断常见的几大数据类型
    instanceof 需要两个参数,用于判断一个变量是否为某个对象的实例,结果是一个布尔值。

    var o = {};
    var a = [];
    
    o instanceof Array // false
    a instanceof Array // true
    

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

    typeof可以判断一个值的数据类型:

    typeof 123 // "number"  /*数值返回"number"*/
    typeof '123' // "string"   /*字符串返回"string"*/
    typeof false // "boolean"   /*布尔值返回"boolean"*/
    
    /*函数返回"function"*/
    function f() {}
    typeof f   // "function"
    
    /*undefined 返回 undefined*/
    typeof undefined  // "undefined"
    
    /* 其余的返回object*/
    typeof window // "object"
    typeof {} // "object"
    typeof [] // "object"
    typeof null // "object"
    

    除此以外,其他情况都返回object。

    typeof window // "object"
    typeof {} // "object"
    typeof [] // "object"
    typeof null // "object"
    

    NaN是什么? 有什么特别之处?##

    NaN含义是Not a Number,表示非数字,NaN和任何值都不相等,NaN不等于自己

    如何把非数值转化为数值?##

    Number()    /*转换为整数或浮点数*/
    parseInt()    /*转换为整数*/
    parseFloat()    /*转换为浮点数*/
    

    ==与===有什么区别?##

    ==和===是比较运算符。比较运算符比较两个值,然后返回一个布尔值,表示是否满足比较条件
    ==表示相等,不同类型的值进行比较时,会进行类型转换,类型相同后再进行值的比较;
    ===表示严格相等,数据类型和值都相等时才输出true,其中有一个不相等,则输出false

    break与continue有什么区别##

    break用于强制退出循环体,执行循环后面的语句
    continue用于退出本次循环,执行下次循环

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

    void 运算符会对给定的表达式进行计算,然后返回 undefined。
    通常 void 0 会用来获取 undefined。undefined 可能会被重写,但是 void 0 返回的值一定会是 undefined。

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

    console.log(1+1);    //2          2个运算子都是原始类型值,转为数字,执行加法运算
    console.log("2"+"4");  //'24'     2个运算子都是原始类型值,只要有一个是字符串,则2个都转为字符串,执行连接运算
    console.log(2+"4"); // '24'       2个运算子都是原始类型值,只要有一个是字符串,则2个都转为字符串,执行连接运算
    console.log(+"4"); // 4           只有一个数字参数的时候返回其正值
    
    var a = 1;  
    a+++a;   //相当于(a++)+a a++先返回当前值为1,然后自增a为2,相当于1+2=3
    typeof a+2; // 'number2'  相当于(typeof a)+2     'number'+2 
    
     var a = 1;
     var b = 3;
     console.log( a+++b ); //4  a++为1 b为3 相当于 1+3=4
    

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

    var arr = [3,4,5]
    
    for (var i=0; i<arr.length; i++) {
    console.log(arr[i]*arr[i])
    } 
    // 输出 9 16 25
    

    ** 遍历 JSON, 打印里面的值**

    var obj = {
     name: 'hunger', 
     sex: 'male', 
     age: 28 
    }
    
    for(var key in obj) {
    console.log(obj[key])
    } 
    //输出 hunger male 28
    

    **以下代码输出结果是? 为什么 **

    var a = 1, b = 2, c = 3;
    var val = typeof a + b || c >0
    console.log(val)                     
    //typeof a 优先级高,typeof a+b输出'number2',或运算符第一个运算子布尔值为true,直接返回第一个的值,输出 'number2'
    
    var d = 5;
    var data = d ==5 && console.log('bb')
    console.log(data)                    
    //且运算符左边布尔值为true,返回第二个运算子的值,所以输出'bb',返回undefined
    
    var data2 = d = 0 || console.log('haha')
    console.log(data2)                   
    //或运算符左边d=0,布尔值为false,返回第二个运算子的值,输出'haha',返回undefined
     
    var x = !!"Hello" + (!"world", !!"from here!!");
    console.log(x)                          
    //括号内,返回逗号后面的值,!!'from here!!'经过2次取反运算符,值为true, !!'Hello' 经过2次取反运算符,值为true,都是原始类型,转化为数值相加,输出2  
    

    相关文章

      网友评论

        本文标题:进阶任务2

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