JS基础之变量类型和变量计算

178 阅读1分钟

变量类型

  • 基本数据类型:数字、字符串、布尔、Null、Undefined。

  • 引用类型:对象、数组、函数。

  • ES6新增:Symbol

let s = Symbol();
typeof s
// "symbol"
  • JS按照存储方式区分变量类型
        //值类型
         var a = 10;
         var b = a;
         a = 11;
         console.log(b); //10

         //引用类型
         var obj1 = {x:100};
         var obj2 = obj1;
         obj1.x = 200;
         console.log(obj2.x); //200
  • typeof只能区分值类型,引用类型区分不了。

  • 代码展示如下:

<script>
          console.log(typeof undefined);
          console.log(typeof 'abc');
          console.log(typeof 123);
          console.log(typeof true);
          console.log(typeof {});
          console.log(typeof []);
          console.log(typeof null);
          console.log(typeof console.log);//函数是个特殊的引用类型,在js中地位很高
          console.log(typeof Symbol())
</script>

对应的结果如下:

undefined
string
number
boolean
object
object
object
function
symbol

变量计算

强制类型转换(以下四种会发生):

  • 字符串拼接
var a = 100 + 10;    //110
var b = 100 + '10'; //'10010'
  • ==运算符 和 ===运算符
100 == '100'       //true   把100 转换成字符串 '100',所以相等
0 == ''            //true   0和 '' 都转换成了false,所以相等
null == undefined  //true   都转换成了false,所以相等

所以这个==运算符需要慎重使用!
问题:何时使用== 何时使用===?
if(obj.a == null){
    //这里相当于obj.a===null ||  obj.a===undefined 简写形式
    //这是jquery源码推荐的写法,除此之外,其他地方全部用 === 运算符 !!!
}
  • if语句
var a = true;
if(a){
    //...
}
  • 逻辑运算
console.log(10 && 0) // 0
console.log('' || 'abc') //'abc'
console.log(!window.abc) //true
   
//判断一个变量会被当做true还是false
 var a = 100;
 console.log(!!a)   true