1.JavaScript是什么
JavaScript由三部分组成:DOM,BOM,ECMScript
对应一个网页来说 组成其的基础 就是HTML,Css,JavaScript HTML作为网页的骨架,Css
作为网页的样式即色彩,JavaScript作为网页的动作即行为/交互
2.数据类型:
基本数据类型(值类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)。
引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function)。
特殊的对象:正则(RegExp)和日期(Date)。
特殊类型:underfined 未定义、Null 空对象、Infinate 无穷、NAN 非数字
基本数据类型的值直接在栈内存中存储,值与值之间独立存在,修改一个变量不会影响到其他变量。
对象是保存在堆内存中的,每创建一个新对象,就会在堆内存中开辟出一个新空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当其中一个通过变量修改属性时,另一个也会受到影响。
当比较两个基本数据类型的值时,就是比较值。
而比较两个引用数据类型时,它是比较的对象的内存地址,如果两个对象是一样,但是地址不同,也会返回false.
3.面试题
1.JavaScript里的堆栈
堆和栈都是用来存储变量数据的,在JavaScript中变量分为两种,一种是基本类型(String,Number、Boolean、null、undefined、symbol(ES6)),一种是引用类型(Object、Array、Function)
1、基本类型:基本类型在内存中分别占有固定大小的空间,他们的值保存在栈中,我们通过按值来访问的。
2、引用类型:引用类型指的是那些保存在堆内存中的对象,值的大小不固定。栈内存中存放地址,地址指向堆内存中的对象,是按引用访问的
>栈内存中存放的只是引用类型的访问地址,在堆内存中为引用类型的值分配空间。由于这种值的大小不固定,因此不能把它们保存到栈内存中。但内存地址大小的固定的,因此可以将内存地址保 存在栈内存中。
><这样,当查询引用类型的变量时, 先从栈中读取内存地址, 然后再通过地址找到堆中的值。对于这种,我们把它叫做按>引用访问
2.es6新特性
1、向对象添加属性;2、合并对象;3、删除对象的属性;4、动态删除属性;5、调整对象属性的位置;6、默认属性;7、重命名对象的属性;8、条件属性。
3.StringApi
str(表示String的实例对象)
str.toUpperCase() //都转大写
str.toLowerCase() //都转小写
var char=str.charAt(i);//得到指定位置的字符: str[i]
var i=str.indexOf("关键词",fromi)查找一个固定的关键词出现的位置
var i=str.search(/正则表达式/); 使用正则表达式查找指定的一类关键词的位置
4.null和undefined有什么区别
(1)相同点
第一:Undefined和Null两种数据类型都只有一个字面值,分别是undefined和null.
第二:Undefined和Null类型在转换为Boolean类型的值时,都会转换为false.
第三:在需要将两者转换成对象的时候,都会抛出一个TypeError的异常。
(2)不同点
第一:null是JavaScript的关键字,而undefined是JavaScript的一个全局变量,也就是挂载在window对象上的一个变量,并不是关键字。
第二:在使用typeof运算符进行检测时,Undefined类型的值会返回undefined.而Null类型的值返回为object
5.== 与 ===
== 仅仅判断值是否相同 不判断类型
=== 不仅仅判断值是否相同 还有判断类型是否相同