一、JavaScript 简介
一、JavaScript语言的介绍:JavaScript是基于对象和原型的一种动态、弱类型的脚本语言
二、JavaScript语言的组成:JavaScript是由核心语法(ECMAScript)、文档对象模型(DOM)、浏览器对象模型(BOM)组成的
核心(ECMAScript):提供语言的语法和基本对象;
文档对象模型(DOM):提供处理网页内容的方法和接口;
浏览器对象模型(BOM):提供与浏览器进行交互的方法和接口。
三、JavaScript语言的应用:实现页面表单验证以及页面交互特效,基于Node.js技术进行服务器端编程等
二、JavaScript的使用
1、javaScript的位置
在 HTML 中,JavaScript 代码必须位于 <script>
与 </script>
标签之间。
<script> document.getElementById("demo").innerHTML = "我的第一段 JavaScript"; </script>
2、js的三种写法
1.内部写法
<script>
alert('01-我是js内部写法')
</script>
2. 外部写法
<script src=".js外部.js"></script>
3. 行内写法
<button οnclick="alert('03-行内写法')">按钮</button>
三、数据类型
一:原始类型(基本类型):值不可变(原始值)
1. Undefined类型:只有一个值undefined,表示未初始化或未声明的变量,因此我们应该对变量显示的初始化(不要是undefined)
2. Null类型:只有一个值null,表示一个空指针对象,因此我们应该将保存对象的变量初始化为null
3. Boolean类型:只有true和false两个值
4. Number类型:表示所有的数值类型,数值范围在(Number.MIN_VALUE~Number.MAX_VALUE)之间,超出范围会自动转化为[-+]Infinity(无穷),NaN是一个非数值
5. String类型: 表示一个字符串,其他类型可以使用toString方法转为字符串
6. Symbol类型:表示一个符号,符号类型是唯一的并且是不可修改的
二:引用类型:值可变
1. 概念:引用类型是一种数据结构,用于将数据和功能组织在一起
2. 常见引用类型:对象(Object)
、数组(Array)
、函数(Function)
、正则(RegExp)
和日期(Date)
等
四、面试题
1.说说JavaScript中的堆栈?
两者都是存放临时数据的地方。
栈是先进后出的,就像一个桶,后进去的先出来,它下面本来有的东西要等其他出来之后才能出来。
堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。对于堆,我们可以随心所欲的进行增加变量和删除变量,不用遵循次序。
栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
2.ES6有哪些新特性?
1.新增了块级作用域(let,const)
2.提供了定义类的语法糖(class)
3.新增了一种基本数据类型(Symbol)
4.新增了变量的解构赋值
5.函数参数允许设置默认值,引入了rest参数,新增了箭头函数。
6.数组新增了一些API,如isArray / from / of 方法;数组实例新增了 entries(),keys() 和 values() 等方法。
7.对象和数组新增了扩展运算符
8.ES6新增了模块化(import / export)
9.ES6新增了Set和Map数据结构。
10.ES6原生提供Proxy构造函数,用来生成Proxy实例
11.ES6新增了生成器(Generator)和遍历器(Iterator)
3.JS中的String常见方法有哪些
- 1、charAt
- 2、concat
- 3、indexOf
- 4、lastIndexOf
- 5、match
- 6、replace
- 7、toLowerCase
- 8、toUpperCase
- 9、substring
4.null和undefined有什么区别?
总的来说 null
和 undefined
都代表空,主要区别在于 undefined
表示尚未初始化的变量的值,而 null
表示该变量有意缺少对象指向。
undefined
- 这个变量从根本上就没有定义
- 隐藏式 空值
null
- 这个值虽然定义了,但它并未指向任何内存中的对象
- 声明式 空值
5.==和===有什么区别?
两者都是判断等式两边是否相等,最大的区别就是==会进行类型的转换之后再判断两者是否相等,而===不会进行数据类型的转换,先判断两边的数据类型是否相等,如果数据类型相等的话才会进行接下来的判断,再进行等式两边值得判断,可以理解为只有等式两边是全等(数据类型相同,值相同)的时候结果才会是true,否则全为false。