javascript考点 —— 变量类型和变量计算(代码演示)

一、值类型

他们之间的值不会相互干预

//值类型
var a = 100;
var b = a;
a = 200;
console.log(b);   //100
var c = b
b = 300
console.log(c) //100

二、引用类型

这里的a,b,c都是指针,指向了一个对象

var a = {age:20}
var b = a
console.log(a)   //{ age: 20 }
console.log(b)   //{ age: 20 }
b.age = 21
console.log(a)   //{ age: 21 }
console.log(b)   //{ age: 21 }
var c = b
console.log(c)   //{ age: 21 }

引用类型可以扩展属性:

var a = {age:20}
a.name = '张三'
a.ccc = 1000
console.log(a)     //{ age: 20, name: '张三', ccc: 1000 }

数组的属性扩展:

var arr = [1,2,3]
arr.age = 21
console.log(arr)   //[ 1, 2, 3, age: 21 ]
var arr2 = arr
console.log(arr2)  //[ 1, 2, 3, age: 21 ]

函数:

function fn(){}
fn.age = 21
var fn1 = fn
console.log(fn)  //{ [Function: fn] age: 21 }
console.log(fn1) //{ [Function: fn] age: 21 }

三、typeof

typeof只能区分值类型的具体类型,不能区分引用类型的具体类型,引用类型只能区分引用类型的function类型,要注意的是typeof null也是object。

四、变量计算

  • ==的强制类型转化
var b = 100 + '10'    //'10010    强制转化nuber类型的100为字符串类型
100 == '100'          //true      强制转化nuber类型的100为字符串类型
null == ''            //true      强制转化null和''为false
null == undefined    //true      //强制转化null和undefined为false
  • if的强制类型转化
var a = true
if(a) {

}
var b = 100
if(b) {

}
var c = ''
if(c) {

}

if里面当false使用的有:0、NaN、' '、null、undefined、false

  • 逻辑运算
console.log(10 && 0)        //0   将10强制转换为true,然后和0与,返回了0
console.log('' || 'abc')   //true  将空转化为false,然后和'abc'或
console.log(!window.abc)  //将window.abc本来是undefined,然后转化为false

//判断一个变量是true或者false
var a = 100
console.log(!!a)      //true

五、内置函数

console.log(Object)    //[Function: Object]
console.log(Array)     //[Function: Array]
console.log(Function)  //[Function: Function]
......

六、内置对象

console.log(Math)       //{}
console.log(JSON)       //{}
......

七、==和===

我们如果查看某个对象的属性是不是存在,可以使用==。在函数的参数是不是存在可以用==。

if(obj.a == null){

}
funciton(a,b){
    if(a == null){

    }
}
//要保证obj和a是定义的

猜你喜欢

转载自blog.csdn.net/zhanghuali0210/article/details/82112556