JS基础和高级01

1.在JS中, ’===‘和’==‘的区别就是,前者判断两个数据类型是否全等的时候,不会做数据类型转换,而后者会先转换到相同的数据类型再判别。
2.typeof 则是返回数据类型的字符串表达。
3.例子:
var a;
console.log(a, typeof a ) ; // undefined ‘undefined’;
console.log(undefined === ‘undefined’); // false
4、instanceof 用于检测构造函数prototype 属性是否出现在某个实例对象的原型链上
需要注意的是,如果表达式 obj instanceof Foo 返回 true,则并不意味着该表达式会永远返回 true,因为 Foo.prototype 属性的值有可能会改变,改变之后的值很有可能不存在于 obj 的原型链上,这时原表达式的值就会成为 false。另外一种情况下,原表达式的值也会改变,就是改变对象 obj 的原型链的情况,虽然在目前的ES规范中,我们只能读取对象的原型而不能改变它,但借助于非标准的 proto 伪属性,是可以实现的。比如执行 obj.proto = {} 之后,obj instanceof Foo 就会返回 false 了。
5.undefined 与 null 的区别:
undefined 代表定义了某个变量,但并未赋值;
null 代表定义了某个变量,赋值为null;
6.什么时候给变量赋值为null呢?
1.初始赋值的时候,表明将要赋值为对象;
2.程序结束前,让对象成为垃圾对象(被垃圾回收器回收)
7.严格区别变量类型与数据类型?
1.数据类型:
基本类型
对象类型
2.变量的类型(变量内存值得类型):
基本类型:保存的是基本类型的数据
引用类型:保存的是地址值
8.栈:存储的是全局/局部变量
堆:存储的是对象
9.
//obj 此时存储的是一个对象的地址
var obj = {name:‘Vodka’};
var obj01 = obj ;
obj.name = ‘Cat’;
//Cat ,因为obj对象的内容赋值给了obj01,内容是一个地址,即两个变量的都指向同一个地址空间
console.log(obj01.name);
//函数参数是对象,这里传值也直接传实参的内容,内容是一个对象地址,此时就有三个变量指向同一内容空间
function diliver(obj02){
obj02.name = ‘inteligent’;
}
diliver(obj);
console.log(obj01.name); //inteligent
console.log(obj.name); //inteligent
10. 当两个引用变量指向同一对象,然后让其中一个变量指向另一对象,此时,指向新对象的引用变量的某个属性值修改,没指向新对象的引用变量的值不变
var obj1 = {name:‘Vodka’};
var obj2 = obj1;
obj1 = {name:‘Jhson’,age:13};
console.log(obj1.name, obj1.age,obj2.name); // Jhson , 13 , Vodka
11.
var a = {age:13};
function change(obj){
obj = {age:15};
}
console.log(a.age); //13,而不是15,因为在函数里面创建的对象,在函数执行完毕后就销毁了,不影响a

猜你喜欢

转载自blog.csdn.net/Vodka688/article/details/113073819