JavaScript 变量、类型与计算

  • 变量类型
  • 变量计算

变量
题目:

  1. JavaScript 中使用typeof能得到的有哪些类型?

     1.1 变量类型
     
     (1).js中的数据类型:字符串、数字、布尔、数组、对象、Null、Undefined
     
     (2).值类型:把每个值存到每个变量
     
         var a = 100;
         var b = a;
         a = 200;
         console.log(b);  // 100
     
     (3).引用类型:1.对象,2.数组,3.函数  
     
     特点:它可以无限扩大属性
     
         var a = { age:20};
         var b = a;
         b.age = 21;
         console.log(a.age); // 21
         
     (4).typeof运算符
     
         typeof undefined   //undefined
         
         typeof 'abc'   //string
         
         typeof 123   //number
         
         typeof true   //boolean
         
         typeof {}   //object
         
         typeof []   //object
         
         typeof null   //object
         
         typeof console.log   //function
        ``` 
     1.2 变量计算 -- 强制类型转换
         
         可能需要转换的情况:
         ```
         (1).字符串拼接
             
             var a = 100 + 10;   //110
             var b = 100 + '10'; //10010
             
         (2).== 运算符
             
              100 == '100';  //true
              0 == '';   //true
              null == undefined; //true
              
              
             
         (3).if语句
         
             var a = true;
             if(a){
                 ..
             }
             
             var b = 100;
             if(b){
                 ..
             }
             
             var c = '';
             if(c){
                 ..
             }
             
         (4).逻辑运算符
         
             console.log(10 && 0);   //0  10自动转换为true
             console.log('' || 'abc'); //'abc' ''自动转换为false
             console.log(!window.abc);    true undefined 就是fasle
             
             判断一个变量会被当做true 还是false
             
             var a = 100;
             console.log(!!a);   //true
             
             var a = '';
             console.log(!!a);   //false
     
    
  2. 何时使用 === 何时使用 == ?

    if(obj.a == null){
        
        1.这里相当于obj.a === null  || obj.a === undfined ,简写形式
        
        这里是jQuery原发中推荐的写法
        
        2.== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。
        而 === 和 !== 只有在相同类型下,才会比较其值。
         
        3.首先,== equality 等同,=== identity 恒等。
        
            (2.1). ==, 两边值类型不同的时候,要先进行类型转换,再比较。
            
            (2.2). ===,不做类型转换,类型不同的一定不等。
        
        下面分别说明:
        先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:
            1、如果类型不同,就[不相等]
            2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
            3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
            4、如果两个值都是true,或者都是false,那么[相等]。
            5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
            6、如果两个值都是null,或者都是undefined,那么[相等]。
        再说 ==,根据以下规则:
            1、如果两个值类型相同,进行 === 比较。
            2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
            a、如果一个是null、一个是undefined,那么[相等]。
            b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
            c、如果任一值是 true ,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
            d、如果一个是对象,另一 个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试 valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂)
            e、任何其他组合,都[不相等]。
        举例:
            "1" == true
             类型不等,true会先转换成数值 1,现在变成 "1" == 1,再把"1"转换成 1,比较 1 == 1, 相等。
            = 赋值运算符 
            == 等于 
            === 严格等于
        例: 
            var a = 3; 
            var b = "3";
            a==b 返回 true 
            a===b 返回 false
            因为a,b的类型不一样
            ===用来进行严格的比较判断
     
    }

3.JavaScript有哪些内置函数?

    (1).数据封装类对象
    
        Object
        Array
        Boolean
        Number
        String
        Function
        Date
        EegExp
        Error
  1. JavaScript变量按照存储方式区分哪些类型,并描述其特点?
    (1). 值类型  
    
        var a =10;
        var b = a;
        a  = 11;
        console.log(b);  //10
        
    (2). 引用类型   var obj = {x:100}
    
        var obj1 = { x:100 };
        var obj2 = obj1;
        obj1.x = 200;
        console.log(obj2.x);    // 200
    ```
5. 如何理解JSON?
    ```
    JSON     只不过去一个 JS 的对象而已
    
    2个接口:
    
        1. 对象变成字符串 -- JSON.stringify({a:10, b:20});
        2. 字符串变成对象 -- JSON.parse('{"a":10, "b":29}');
    ```
原文地址:https://www.cnblogs.com/liangfengbo/p/7305550.html