目录
前端
- HTML 前端页面的框架
- CSS 对框架进行修饰和美化
- JavaScript 页面的框架行为,让妞页面产生动态效果
JavaScript
1.什么是JavaScript?
JavaScript是一种轻量级弱类型的脚本语言,其优点就是轻量级,代码量小,占用内存小。
2. JavaScript的组成
ECMAScript:JS的基本语法和标准(到现在ES已经发展到14版本)
DOM:文档对象模型----通过js操作页面中的标签
BOM:浏览器对象模型----通过js操作浏览器
3.JavaScript的使用
1- 行内js
把js的代码放到标签里面
<button οnclick=”alert(‘你好js’)”>按钮</ button >
2- 内嵌
<script> alert(‘你好js’)</ script>
注:script是双标签,可以嵌套在页面任何地方,建议放到body里面或者下面
3- 外联
要在页面的外面新建一个js文件,导入外部js使用script标签,可以嵌套在页面任何地方,建议放到body后面
<script src=”./index.js”> alert(‘你好js’)</ script>
注意:在导入的标签中不可以写入js代码
4.JavaScript的输出方式
1-弹框
alert —— 警示框/提示框,自带一个确认按钮。
confirm —— 判断框(询问框,有确认和取消),返回Boolean值,true和false。
prompt —— 输入框,点击取消,返回null,写了内容点取消也是null。在输入内容的情况下点击确认是string,若没有内容返回空白。
2- 控制台输出
console.log(‘输出的内容’)
3-页面输出(可以给页面输出任何内容 )
document.write(‘输出的内容’)
5.JavaScript的变量
在 JavaScript 中,变量是用于存储数据值的标识符。变量可以存储各种类型的数据,如数字、字符串、布尔值、对象、数组等。JavaScript 是一种动态类型语言,这意味着变量可以在运行时改变其数据类型。
1.变量的作用:使用一个名字来记录一个值
2.变量的组成:变量名、变量值、变量类型
变量名:存储在变量中的数据,可以是原始类型或引用类型。
变量值:变量值是存储在变量中的数据。
变量类型:JavaScript 支持多种数据类型,变量值可以是这些类型中的任何一种。
3.变量的声明方式:
1- var 变量名(声明一个变量),是最早的声明方式
变量名=变量值(给变量进行赋值)
简写:Var 变量名=变量值
eg. var name = "张三"
例1:
当一个变量只定义不赋值,返回undefined
例2:
一个变量没有被定义直接输出,会报错,变量is not defined
2- let:是ES6引入的变量声明方式,具有块级作用域
eg. let name = "张三"
3- const:是ES6引入的变量声明方式,具有块级作用域
eg. const x = 20
常见问题:
1. let、var、const三者之间的区别?
它们三者的区别可以从变量提升、作用域、暂时性死区、是否可以重复声明等考虑。
var:
具有变量提升,变量在声明之前调用,值为undefined
不存在暂时性死区
具有全局作用域或函数作用域
允许重复声明变量
可以修改声明的变量
let:
不存在变量提升
存在暂时性死区
具有块级作用域
在同一作用域下不允许重复声明变量
可以修改声明的变量
const:
不存在变量提升
存在暂时性死区
具有块级作用域
在同一作用域下不允许重复声明变量
只能声明一个只读的常量,常量的值一旦声明,就不能改变
6.JavaScript中的数据类型
-
变量类型可以分为基本数据类型和复杂(引用)数据类型。
- 基本数据类型:
- Number:数值型
- String:字符串型
- Boolean:布尔值,返回值true/false
- Null:表示已定义但是值为空,空值
- Undefined:表示未定义的,返回值也是undefined
- Symbol:独一无二的值
- 复杂数据类型:
- object:对象类型,表示复杂的数据结构
- Array:数组类型
- Function:函数类型
- Date:日期类型
- RegExp:正则表达式,用于匹配字符串模式
- 基本数据类型:
-
基本数据类型和复杂数据类型之前的区别是什么?
- Symbol、BigInt:
- Symbol 和 BigInt 是ES6 中新增的数据类型。
- Symbol 代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题。
- BigInt 是一种数字类型的数据,它可以表示任意精度格式的整数,使用 BigInt 可以安全地存储和操作大整数,即使这个数已经超出了 Number 能够表示的安全整数范围。
- 两种类型的区别在于存储位置的不同:
- 原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
- 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定。如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。
- 堆和栈的概念存在于数据结构和操作系统内存中,在数据结构中:
- 在数据结构中:
- 在数据结构中,栈中数据的存取方式为先进后出。
- 堆是一个优先队列,是按优先级来进行排序的,优先级可以按照大小来规定。
- 在操作系统中:
- 内存被分为栈区和堆区:
- 栈区内存由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈堆区内存一般由开发着分配释放,若开发者不释放,程序结束时可能由垃圾回收机制回收。
- 在数据结构中:
- Symbol、BigInt:
-
数据类型检测的方式有哪些?
- typeof():
- 能够检测出基本数据类型,但是对于复杂数据类型来说,使用它检测不够准确。使用typeof检测复杂数据类型,返回值为“object”。
- 能够检测出基本数据类型,但是对于复杂数据类型来说,使用它检测不够准确。使用typeof检测复杂数据类型,返回值为“object”。
- instanceof():
- 能够准确的检测出对象的类型。其内部运行机制是查看对象的原型链上是否有该类型的原型。
- 根据以下结果,能够看出instanceof可以检测复杂数据类型,但是不适用于基本数据类型
- constructor():
-
constructor有两个作用,一是判断数据的类型,二是对象实例通过
constructor
对象访问它的构造函数。 -
-
- object.prototype.toString.call():
-
使用 Object 对象的原型方法 toString 来判断数据类型
-
-
- typeof():