JavaScript中的== 和=== 的区别
== 表示值的比较,=== 表示对象类型的比较。
注意
1、对于string,number等基础类型,== 和 ===是有区别的。
a)不同类型间比较,==之比较转化成同一类型的值,如果值相等,结果就等, === 如果类型不同,其结果就是不等。
alert('2' == 2); //结果为true
alert('2' === 2); //结果为false
2、对于Array,Object等高级类型,== 和 === 是没有区别的。
进行“指针地址”比较。
3、基础类型与高级类型,== 和 === 是有区别的。
a) 对于 ==,将高级转化为基础类型,进行“值”比较。
b)因为类型不同, === 结果为false。
var a = '1'; //基本数据类型:String
var b = 1; //基本数据类型:Number
var c = [1,2] //引用类型:Array
var d = [1,2] //引用类型:Array
var e = c //e指向的是c的地址值
console.log(a == b) //结果为:true
console.log(a === b) //结果为:false
console.log(c === d) //结果为:false
console.log(e === c) //结果为:true
console.log(e == c) //结果为:true
JavaScript中undefined和null
1、undefined和null的区别
undefined代表定义未赋值(没有找到)
null定义并赋值了,只是值为null(值为空)
2、什么时候应该给变量赋值为null呢?
a)初始赋值,表明将要赋值为对象
b)结束前,让对象成为垃圾对象(被垃圾回收器回收)
3、严格区别变量类型与数据类型
数据类型:
*基本类型
*对象类型
变量的类型(变量内存值的类型)
*基本类型:保存的是基本类型的数据
*引用类型:保存的是地址值
function Person (name, age) {// 构造函数 类型
this.name = name
this.age = age
}
var p = new Person('tom', 12) // 根据类型创建的实例对象
// 1. undefined与null的区别?
var a
console.log(a) // undefined
a = null
console.log(a) // null
//起始
var b = null // 初始赋值为null, 表明将要赋值为对象
//确定对象就赋值
b = ['atguigu', 12]
//最后
b = null // 让b指向的对象成为垃圾对象(被垃圾回收器回收)
JavaScript中的分号问题
1、js一条语句的后面可以不加分好
2、是否加分号是编码风格问题,根据个人的习惯爱好,并不影响结果
3、在下面两种情况下不加分好会有问题
a)小括号开头的前一条语句
b)中方括号开头的前一条语句
4、解决方法:在首行加分号
var a = 3
;(function () {
})()
/*
错误理解
var a = 3(function () {
})();
*/
var b = 4
;[1, 3].forEach(function () {
})
/*
错误理解
var b = 4[3].forEach(function () {
})
*/