考点:强制类型转换
1、对于string,number等基础类型,==和===是有区别的
1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
2)同类型比较,直接进行“值”比较,两者结果一样
2、对于Array,Object等高级类型,==和===是没有区别的
进行“指针地址”比较
3、基础类型与高级类型,==和===是有区别的
1)对于==,将高级转化为基础类型,进行“值”比较
2)因为类型不同,===结果为false
变量类型:值类型vs引用类型
值类型:var a = 100;var b=a;a=200;
一般来说,变量分为简单类型,和复杂类型,简单类型有,number,string,boolean,NaN,undefinde,所有的简单类型都属于值类型的变量,值类型的元素在内存中都会被直接存储到一个固定的位置
引用类型:var a = {},var b= [];function()对象,数组,函数
复杂类型有,Array()、Date()、还有有意思的function()类型
复杂类型又被称为引用类型,引用类型的元素在内存中会被储存起来,只是类型里面的所有元素都是一个地址,指向内存中的具体数值,为什么叫引用类型的原因也是我们所有对象存储的只是指向某份具体文件的指针而已,并没有存储具体的值。
引用类型的作用,共用类型,可以无限扩展
JS变量按照存储方式区分为哪些类型,并描述其特点
值类型 (单独使用变量空间)
引用类型 (共用变量区域,节省空间,值之间相互区别)
Js中有哪些内置函数 —-数据封装对象
Object Arrary Boolean Number String Function Date RegExp Error
如何理解json
既是一种数据类型,也是Js对象
变量计算——强制类型转换
字符串拼接
例:var a = 100+10 // 110
Var a = 100+’10’ // ‘10010’
==运算符
例:100==’100’ //true
0 =‘ ’ //true
Null = undefined //true
If语句
例:var a = true
If(a) {
//... true
}
var b = 100
If (b) {
//... true
}
var c =‘ ’
If(c) {
//... false
}
逻辑运算
例:console.log(10 && 0) // true 10是true
console.log(‘ ‘ ||‘abc’) // ‘ ‘ 为false结果是’abc’
Console.log(! window.abc) // true
//判断一个变量会被当做 true还是 false
Var a= 100 console.log(!! a)
If(...){
// if中当false 使用的:0,null,’ ‘ , undefined, NaN, false
}
问题:何时使用===何时使用==
If ( obj.a == null) {
//这里相当于 obj.a ===null || obj.a === undefined ,简写形式
//这是jquery 源码中推荐的写法
}
注:除了这个都用===