欢迎关注 『Javascript基础重点』 专栏,持续更新中
欢迎关注 『Javascript基础重点』 专栏,持续更新中
介绍一些Javascript的基础重点知识,包括并不限于函数作用域与提前声明和对象的构造函数等问题。
1. 背景知识
- 基本数据类型(除了对象类型都是基本数据类型)
- String Number Boolean Null Undefined
- 引用数据类型
- Object
- 在JS中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型的数据转换为对象
- String()
-
- 可以将基本数据类型字符串转换为String对象
- Number()
-
- 可以将基本数据类型的数字转换为Number对象
- Boolean()
-
- 可以将基本数据类型的布尔值转换为Boolean对象
- 但是注意:我们在实际应用中不会使用基本数据类型的对象,
-
如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果
如果不用String等对象的方法,其实很多时候我们不学这一节也没有关系,因为js内部自动帮我们进行转化,但是如果后面遇到了对象类型错误方面的问题就可能会很懵,这一节会帮你解答很多问题。
2. 引用类型对象的特殊之处
虽然2个引用类型指向各自的2个内存区域都存放““hello””这一相同的数据内容,但是比较两个引用类型的内存地址值时肯定会得到false的结果。
- ==仅用来检测数值是否相等(定义较宽松)在规范中,==有着明确定义,从中可以看出,进行算法之前,我们要做的第一件事实际上就是确认变量类型。
- ===检查数值及变量类型(严格比较)同样可以从规范中看到,===要求先检查变量类型,并且如果类型不同,则无需再比较数值。
<script type="text/javascript">
var str = new String("hello"); //创建一个内存区域a,str存放这一个内存区域a的引用地址
var str2 = new String("hello"); //创建一个内存区域b,str存放这一个内存区域b的引用地址
//虽然2个引用类型指向各自的2个内存区域都存放“"hello"”这一相同的数据内容,但是比较两个引用类型的内存地址值时肯定会得到false的结果
console.log(str === str2); //false // 数据类型相同,数据值不相同(两者的引用指向地址不同)
console.log(str == str2); //false // 数据类型相同,数据值不相同
</script>
3. 引用类型对象不能与基本数据类型直接比较
<script type="text/javascript">
//创建一个Number类型的对象
var num = 3;
var num2 = new Number(3);
console.log(num === num2); //false 一个基本对象一个引用对象,数据类型不同
console.log(num == num2); //true 两者的数据值相同
var bool = new Boolean(true);
var bool2 = true;
console.log(bool === bool2); //false 一个基本对象一个引用对象,数据类型不同
console.log(bool == bool2); //true 两者的数据值相同
</script>
4. 拓展问题:基本类型变量能不能添加方法和属性?
- 方法和属性之能添加给对象,不能添加给基本数据类型
- 当我们对一些基本数据类型的值去调用属性和方法时,
-
浏览器会临时使用包装类将其转换为对象,然后在调用对象的属性和方法
-
调用完以后,在将其转换为基本数据类型
- 引用类型可以有方法和属性
<script type="text/javascript">
//对象类型才可以有绑定的属性和方法
var b = new Boolean(false);
if (b) {
alert("我运行了~~~"); 我运行了~~~
}
</script>
- 基本类型
<script type="text/javascript">
var qwer = 1;
console.log(typeof qwer); //number
qwer = qwer.toString(); //将qwer转为对象-> 非基本类型String类型 ->基本类型string类型,这个中间过程就是我们本节学习的内容
console.log(typeof qwer); //string
qwer.hello = "你好"; //这里会临时帮我们转为 非基本类型绑定属性,但是因为原来是基本类型,最后还是回到基本类型,把绑定好的hello属性销毁掉
console.log(qwer.hello); //undefined 基本类型不能绑定属性
console.log(typeof qwer); //string
</script>
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2023 mzh
Crated:2023-3-1
欢迎关注 『Javascript基础重点』 专栏,持续更新中
欢迎关注 『Javascript基础重点』 专栏,持续更新中
『1.提前声明问题,你苦恼写了js函数代码但是不会生效的问题吗?』
『2.易错点之函数形参与函数作用域的坑』
『3.了解原型对象优雅地构造函数の“JS中的Java继承” 提高运行效率,优雅地使用对象』
『4.JS垃圾回收机制简析』
『5.以toString()为例学习JS中的java方法重写』
『6.数组的常用方法与数组遍历』
『7.函数进阶之call()和apply()与arguments』
『8.Date类与利用时间戳来测试代码的执行的性能』
『9.Math类方法』
『10.包装类』
『11.字符串的方法』
『12.正则表达式介绍 邮件正则表达式写法』
『13.dom的应用』
『未完待续』