javascript考点 —— 变量类型和变量计算

一、变量类型

1、值类型和引用类型

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

值类型:number、string、boolean、undefined

v//值类型
var a = 20;
var b = a;
a = 21;
console.log(b);   //20  这里的a和b是两个存储空间

//引用类型
var a = {age:20}
var b = a
b.age = 21
console.log(a.age)   //21    这里的a和b都同时指向了同一个对象

值类型存在内存中时,a是一个空间,b是一个空间,两者不干扰。而引用类型就不一样了,把a赋值成一个对象,对象存在另一个空间,a只是通过一个指针指向了这个对象。 引用类型可以无限扩展属性。

2、typeof运算符详解

看如下的例子:

console.log(typeof undefined)      //undefined
console.log(typeof 'abc')          //string
console.log(typeof 123)            //number
console.log(typeof true)          //boolean
console.log(typeof {})            //object
console.log(typeof [])            //object
console.log(typeof null)         //object
console.log(typeof console.log)  //function

可以看出,typeof可以得到的类型有undefined、string、number、boolean、object、function。由此我们还可以看出typeof只能区分值类型的具体类型,不能得到引用类型的具体类型,但它可以判断出引用类型中的函数类型。

3、变量计算-强制转换(值类型的强制转换)

  • 字符串拼接
var b = 100 + '10'    //'10010
  • ==运算符
100 == '100'          //true  强制将前面的number类型100转化为string类型的100
0 == ''              //true   强制将 0 和 '' 转化为false
null == undefined    //true  强制将 null 和 undefined 转化为false
  • if语句
var a = true
if(a) {       //正常
    
}
var b = 100
if(b) {      //将b强制转化为true
    
}
var c = ''
if(c) {       //将c强制转化为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

二、题目解答

  • JS中使用typeof能得到的哪些数据类型?

解答:undefined、string、number、boolean、object、function

  • 何时使用===何时使用==

解答:除了下面这个情况,其他全部用===

if(obj.a == null) {
    //这里相当于obj.a === null || obj.a ===undefined,简写形式
    //这是jquery源码中推荐的写法
}
  • JS中有哪些内置函数

解答:Object、Array、Boolean、Number、String、Function、Date、RegExp、Error

  • JS变量按照存储方式区分为哪些数据类型,并描述其特点

解答:值类型和引用类型。值类型可以将数据分块存在内存中,引用类型好几个类型共用一个内存块,未来节省一定的空间。值类型的值不相互干预,二引用类型的值是相互干预的。

  • 如何理解JSON

解答:JSON是JS的一个内置对象,它也是一种数据格式。常用的API有:

JSON.stringify({a:10, b:20})     //对象变为字符串
JSON.parse('{"a":10, "b":20}') //字符串变为对象

猜你喜欢

转载自blog.csdn.net/zhanghuali0210/article/details/82109340
今日推荐