1、JavaScript 介绍
1.1、JavaScript 是什么
1.1.1、JavaScript(是什么?)
是一种运行在客户端(浏览器)的编程语言,实现人机交互效果
1.1.2、作用(做什么?)
- 网页特效(监听用户的一些行为让网页作出相应的反馈)
- 表单验证(针对表单数据的合法性进行判断)
- 数据交互(获取后台的数据,渲染到前端)
- 服务端编程(node.js)
1.1.3、JavaScript 的组成(有什么?)
- ECMAScript:
- 规定了 js 基础语法核心内容
- 比如:变量、分支语句、循环语句、对象等等
- 规定了 js 基础语法核心内容
- Web APIs:
- DOM 操作文档,比如对页面元素进行移动、大小、添加删除等操作
- BOM 操作浏览器,比如页面弹窗,检测窗口宽度、存储数据到浏览器等等
JavaScript 权威网站:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript(MDN)
1.2、JavaScript 书写位置
目标:知道如何向页面添加 JavaScript
css 位置:
- 行内样式表
- 内部样式表
- 外部样式表
1.2.1、内部 JavaScript
直接写在 html 文件里,用 script 标签包住
规范:script 标签写在 </body>
拓展:alert(‘你好,js’) 页面弹出警告对话框
<body>
<script>
alert('你好,js')
</script>
</body>
注意事项:
- 我们将
<script>
放在 HTML 文件的底部附件的原因是浏览器会按照代码在文件中的顺序加载 HTML。 - 我们如果先加载的 JavaScript 期望修改其下方的 HTML,那么它可能由于 HTML 尚未被加载而失效。
- 因此,将 JavaScript 代码放在 HTML 页面的底部附件通常是最好的策略。
1.2.2、外部 JavaScript
代码写在以 .js
结尾的文件里
语法:通过 script
标签,引入到 html 页面中
<body>
<!-- 通过 src 引入外部 js 文件 -->
<script src="my.js"></script>
</body>
注意事项:
- script 标签中间无需写代码,否则会被忽略!
- 外部 JavaScript 会使代码更加有序,更易于复用,且没有了脚本的混合,HTML 也会更加易读,因此这是一个好的习惯
1.2.3、内联 JavaScript
代码写在标签内部
语法:
<body>
<button onclick="alert('逗你玩~~~')">
点击我月薪过万
</button>
</body>
注意:此处作为了解即可,但是后面 vue 框架会用这种模式
1.3、JavaScript 怎么写
目标:了解 JavaScript 注释写法以及结束符通俗写法
-
注释
-
单行注释
- 符号:
//
- 作用:
//
右边的这一行的代码会被忽视 - 快捷键:
Ctrl
+/
<script> // 这种是单行注释 // 一次只能注释一行 // 可以重复注释 </script>
- 符号:
-
块注释
- 符号:
/* */
- 作用:在
/* */
内部的所有内容都会被忽视 - 快捷键:
Shift
+alt
+a
<script> /* 这种的是多行注释的语法 */ /* 更常见的多行注释是这种写法 这种写法可以任意换行,多少行都可以 */ </script>
- 符号:
-
-
结束符
- 作用:使用英文的
;
代表语句结束 - 实际情况:实际开发中,可写可不写,浏览器(JavaScript 引擎)可以自动推断语句的结束位置
- 现状:在实际开发中,越来越多的人主张,书写 JavaScript 代码时省略结束符
- 约定:为了风格统一,结束符要么每句都写,要么每句都不写(按团队要求)
- 作用:使用英文的
1.4、JavaScript 输入输出语法
目标:能写出常见的 JavaScript 输入输出语法
什么是语法:
- 人和计算机打交道的规则约定
- 我们要按照这个规则去写
- 我们程序员需要操控计算机,需要计算机能看懂
1.4.1、输出语法
-
语法1:
document.write('要输出的内容')
作用:向 body 内输出内容
注意:如果输出的内容是标签,也会被解析成网页元素
-
语法2:
alert('要输出的内容')
作用:页面弹出警告对话框
-
语法3:
console.log('控制台打印')
作用:控制台输出语法,程序员调试使用
1.4.2、输入语法
-
语法:
prompt('请输入您的姓名:')
作用:显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字
1.4.3、JavaScript代码执行顺序
- 按 HTML 文档流顺序执行 JavaScript 代码
alert()
和prompt()
它们会跳过页面渲染先被执行(目前作为了解,后期讲解详细执行过程)
1.5、字面量
目标:能说出什么是字面量
在计算机科学中,字面量(literal)是在计算机中描述 事/物
比如:
- 我们工资是:1000,此时 1000 就是数字字面量
- ‘黑马程序员’,字符串字面量
- 还有接下来我们学习的 [] 数组字面量、{} 对象字面量,等等
2、变量
2.1、变量是什么
问题1:用户输入的数据我们如何存储起来?
2.1.1、变量
- 白话:变量就是一个装东西的盒子
- 通俗:变量是计算机中用来存储数据的 “容器”,它可以让计算机变得有记忆。
注意:变量不是数据本身,它们仅仅是一个用于存储数值的容器。可以理解为是一个个用来装东西的纸箱子。
2.2、变量的基本使用
目标:能够声明一个变量并完成赋值操作
2.2.1、变量的声明
要想使用变量,首先要创建变量(也称为声明变量或者定义变量)
语法:
let 变量名
- 声明变量有两部分构成:声明关键字、变量名(标识)
- let 即关键字(
let
:允许、许可、让、要),所谓的关键字是系统提供的专门用来声明(定义)变量的词语
例如:
// 声明变量
let age
2.2.2、变量的赋值
定义了一个变量后,你就能够初始化它(赋值)。在变量名之后跟上一个 =
,然后是数值。
// 赋值变量
age = 18
注意:是通过变量名来获得变量里面的数据
简单点,可以声明变量的时候直接完成赋值操作,最终操作也称为 变量初始化
let age = 18
2.2.3、更新变量
目标:掌握变量的更新以及了解同时声明多个变量的写法
变量赋值后,还可以通过简单地给它一个不同的值来更新它
let age = 18
age = 19
// 以下是错误示范
let age = 18
let age = 19
注意:let 不允许多次声明一个变量
2.2.4、声明多个变量
语法:多个变量中间用逗号隔开
let age = 18, uname = 'pink'
说明:虽然看上去代码长度更短,但并不推荐这样。为了更好的可读性,请一行只声明一个变量
2.3、变量的本质
目的:能够说出变量的本质
内存:计算机中存储数据的地方,相当于一个空间
变量本质:是程序在内存中申请的一块用来存放数据的小空间
2.4、变量命名规则与规范
目标:能写出符合规范的变量名
-
规则:必须遵守,不遵守报错
-
不能用关键字
- 关键字:有特殊含义的字符,JavaScript 内置的一些英文词汇。例如:
let
、var
、if
、for
等
- 关键字:有特殊含义的字符,JavaScript 内置的一些英文词汇。例如:
-
只能用下**划线、字母、数字、$**组成,且数字不能开头
-
字母严格区分大小写,如 Age 和 age 是不同的变量
-
-
规范:建议,不遵守不会报错,但不符合业内通识
-
起名要有意义
-
遵守小驼峰命名法
- 第一个单词首字母小写,后面每个单词首字母大写。例如:userName
-
2.5、变量拓展 let 和 var 的区别
let
和 var
区别:
在较旧的 JavaScript,使用关键字 var
来声明变量,而不是 let
。
var
现在开发中一般不再使用它,只是我们可能在老版程序中看到它。
let
为了解决 var
的一些问题。
var
声明:
- 可以先使用 再声明(不合理)
var
声明过的变量可以重复声明(不合理)- 比如变量提升、全局变量、没有块级作用域等等
2.6、变量拓展 数组
数组(Array): 一种将一组数据存储在单个变量名下的优雅方式
let arr = []
目标:能够声明数组并且能够获取里面的数据
2.6.1、声明语法
let 数组名 = [数据1, 数据2, ···, 数组n]
-
例如:
let names = ['小明', '小刚', '小红', '小丽', '']
-
数组是按顺序保存的,所以每个数据都有自己的编号
-
计算机中的编号从0开始,所以小明的编号为0,小刚的编号为1,以此类推
-
在数组中,数据的编号也叫索引或下标
-
数组可以存储任意类型的数据
2.6.2、取值语法
数组名[下标]
-
例如:
let names = ['小明', '小刚', '小红', '小丽', ''] name[0] // 小明 name[1] // 小刚
-
通过下标取数据
-
取出来是什么类型的,就根据这种类型的特点来访问
2.6.3、一些术语
- 元素:数组中保存的每个数据都叫数组元素
- 下标:数组中数据的编号
- 长度:数组中数据的个数,通过数组的
length
属性获得
3、常量
3.1、常量的基本使用
-
概念:使用
const
声明的变量成为 “常量” -
使用场景:当某个变量永远不会改变的时候,就可以使用
const
来声明,而不是用let
-
命名规范:和变量一致
-
常量使用:
// 声明一个常量 const G = 9.8
-
注意:常量不允许重新赋值,声明的时候必须初始化
-
小技巧:不需要重新赋值的数据使用常量
4、数据类型
目标:能说出 JS 中基本数据类型有哪些
- 基本数据类型
- 数字型
number
- 字符串型
string
- 布尔型
boolean
- 未定义型
undefined
- 空类型
null
- 数字型
- 引用数据类型
- 对象
object
- 对象
4.1、数字类型 Number
即我们数学中学习到的数字,可以是整数、小数、正数、负数。
let age = 18 // 整数
let price = 88.99 // 小数
注意事项:JS 是弱数据类型,变量到底属于哪种类型,只有赋值之后,我们才能确认
4.1.1、算术运算符
数字可以有很多操作,比如:加法+
、减法-
、乘法*
、除法/
等等,所以经常和算术运算符一起。
数字运算符也叫算术运算符,主要包括:加+、减-、乘、除/、取余(求模)%
目标:能说出 JavaScript 算术运算符执行的优先级顺序
同时使用多个运算符编写程序时,会按照某种顺序先后执行,我称之为优先级
JavaScript 中优先级越高越先被执行,优先级相同时从左向右执行
*
、/
、%
优先级相同+
、-
优先级相同*
、/
、%
优先级大于+
、-
- 使用
()
可以提升优先级 - 总结:先乘除、后加减、有括号先算括号里面的
4.1.2、NaN
NaN
(Not a Number)代表一个计算错。它是一个不正确的或者一个未定义的数字操作得到的结果
console.log('老师' - 2) // NaN
NaN 是粘性的。任何对 NaN 的操作都会返回 NaN
console.log(NaN + 2) // NaN
4.2、字符串类型 String
通过单引号 ''
、双引号 ""
、或反引号 `` 包裹的数据都叫做字符串,单引号和双引号本质上没有区别,推荐使用单引号。
let uname = '小明' // 使用单引号
let gender = "男" // 使用双引号
let goods = `小米` // 使用反引号
let tel = '13681113456' // 看上去是数字,但是引号报过来就似乎字符串
let str = '' // 这种情况叫空字符串
注意事项:
- 无论单引号或是双引号必须成对使用
- 单引号 / 双引号可以互相嵌套,但是不可以自己嵌套自己(外双内单、外单内双)
- 必要时可以使用转义字符
\
,输出单引号或双引号
4.2.1、字符串拼接
场景:+
运算符可以实现字符串的拼接
口诀:数字相加,字符相连
let uname = '刘德华'
let song = '忘情水'
console.log(uname + song)
4.2.2、模板字符串
-
使用场景
- 拼接字符串和常量
- 在没有它之前,要拼接变量比较麻烦
let name = '小米' let age = 18 console.log('大家好,我叫' + name + ',今年' + age +'岁')
-
语法
- `` 反引号
- 内容拼接变量时,用
${}
包住变量
let name = '小米' let age = 18 console.log(`大家好,我叫${name},今年${age}岁`)
4.3、布尔型 Boolean
表示肯定或否定时在计算机中对应的是布尔类型数据。
它有两个固定的值 true 和 false,表示肯定的数据用 true,表示否定是数据用 false。
let isCool = true
console.log(isCool)
4.4、未定义类型 Undefined
未定义是比较特殊的类型,只有一个值 undefined
什么情况出现未定义类型?
只声明变量,不赋值的情况下,变量的默认值为 undefined
,一般很少[直接]为某个变量赋值为 undefined
。
let age
console.log(age)
工作中的使用场景:
我们开发中经常声明一个变量,等待传送过来的数据。
如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是 undefined
,就判断用户是否有数据传递过来。
4.5、空类型 Null
JavaScript 中的 null
仅仅是代表 “无”、“空” 或 “值未知” 的特殊值
let obj = null
console.log(obj) // null
null 和 undefined 区别:
undefined
表示没有赋值null
表示赋值了,但是内容为空
null 开发中的使用场景:
官方解释:把 null
作为尚未创建的对象
大白话:将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个 null
4.6、检测数据类型
通过 typeof
关键字检测数据类型
typeof 运算符可以返回被检测的数据类型。它支持两种语法形式:
- 作为运算符:
typeof x
(常用写法) - 函数形式:
typeof(x)
换言之,有括号和没有括号,得到的结果是一样的,所以我们直接使用运算符的写法。
5、类型转换
5.1、为什么要类型转换
- JavaScript 是弱数据类型:JavaScript 也不知道变量到底属于哪种数组类型,只有赋值了才清楚
- 坑:使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算
console.log('100' + '200') // 输出结果 100200
5.2、隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换
规则:
- 号两边只要有一个是字符串,都会把另外一个转成字符串
- 除了 + 以外的算术运算符,比如 - * / 等都会把数据类型转成数字类型
缺点:
- 转换类型不明确,靠经验才能总结
小技巧:
- 号作为正号解析可以转换成数字型
- 任何数据和字符串相加结果都是字符串
null
经过数字转换之后会变成0
undefined
经过数字转换之后会变成NaN
5.3、显示转换
编写程序时过度依靠系统内部隐式转换是不严谨的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。
概念:自己写代码告诉系统该转成什么类型
5.3.1、转换为 Number 型
-
Number()
let str = '123' console.log(Numbder(str))
-
parseInt()
只保留整数,小技巧👇
let str = '12px' console.log(parseInt(str)) // 12
-
parseFloat()
可以保留小数,小技巧👇
let str = '12.34px' console.log(parseFloat(str)) // 12.34
5.3.2、转换为 Boolean 型
''
、0
、undefined
、null
、false
、NaN
转换为布尔型值后都是 false
,其余都为 true
-
Boolean()
Boolean(undefined)
6、运算符
6.1、赋值运算符
赋值运算符:对变量进行赋值的运算符
- 已经学过的赋值运算符:
=
将等号的右边的值赋予给左边,要求左边必须为一个容器 - 其他赋值运算符:
+=
、-=
、*=
、/=
、%=
6.2、一元运算符
众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
例子:
-
二元运算符
let num = 10 + 20
-
一元运算符
let num = +'123'
6.2.1、自增 & 自减
-
自增
-
符号:
++
-
作用:让变量的值加 1
-
前置自增
let num1 = 1 let num2 = ++num1 // num2 = 2
-
后置自增
let num1 = 1 let num2 = num1++ // num2 = 1
-
-
自减
-
符号:
--
-
作用:让变量的值减 1
-
前置自减
let num1 = 1 let num2 = --num1 // num2 = 0
-
后置自减
let num1 = 1 let num2 = num1-- // num2 = 1
-
-
使用场景:经常用于计数来使用。比如进行 10 次操作,用它来计算进行了多少次
6.3、比较运算符
>
:左边是否大于右边<
:左边是否小于右边>=
:左边是否大于等于右边<=
:左边是否小于等于右边==
:左右两边是否相等===
:左右两边是否类型和值都相等(强烈建议)!==
:左右两边是否不全等
- 字符串比较,是比较的字符对应的 ASCII 码
- 从左往右依次比较
- 如果第一位一样再比较第二位,以此类推
- 比较的少,了解即可
NaN
不等于任何人,包括自己- 涉及到
NaN
的都是false
- 涉及到
- 尽量不要比较小数,因为小数有精度问题
null
==undefined
结果为true
null
===undefined
结果为false
6.4、逻辑运算符
使用场景:逻辑运算符用来解决多重条件判断
符号 | 名称 | 日常读法 | 特点 | 口诀 |
---|---|---|---|---|
&& | 逻辑与 | 并且 | 符号两边都为true 结果才为true | 一假则假 |
|| | 逻辑或 | 或者 | 符号两边有一个true 就为true | 一真则真 |
! | 逻辑非 | 取反 | true 变false ,false 变true | 真变假,假变真 |
6.4.1、逻辑中断
function fn(x, y) {
x = x || 0
y = y || 0
sonsole.log(x + y)
}
// 正常传参时
fn(1, 2) // 3
// 没有参数时
fn() // 0
- 短路:只存在于 && 和 || 中,当满足一定条件时会让右边的代码不执行
6.5、运算符优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++ – ! |
3 | 算术运算符 | 先 * / % 后 + - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先 && 后 || |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
- 一元运算符中的逻辑非优先级很高
- 逻辑与优先级比逻辑或优先级更高
7、语句
7.1、表达式和语句
-
表达式:是可以被求值的代码,JavaScript 引擎会将其计算出一个结果。
x = 7 3 + 4 num++
-
语句:是一段可以执行的代码
prompt()
7.2、分支语句
程序三大流程控制语句:
- 以前我们写的代码,写几句就从上往下执行几句,这种叫顺序结构
- 有的时候要根据条件选择执行代码,这种就叫分支结构
- 某段代码被重复执行,就叫循环结构
7.2.1、if 分支语句
- if 语句有三种使用:单分支、双分支、多分支
if (条件1) {
满足条件1执行的代码
}
else if (条件2) {
满足条件2执行的代码
}
else {
以上条件都不满足时执行的代码
}
- 数字只有 0 为假,其余都为真
- 字符串只有 ‘’ 为假,其余都为真
7.2.2、三目运算符
条件 ? 满足条件执行的代码 : 不满足条件执行的代码
- 一般用来取值
7.2.3、switch 分支语句
switch (数据) {
case 值1:
代码1
break
case 值2:
代码2
break
......
default:
代码n
break
}
- switch case 语句一般用于等值判断,不适合区间判断
- switch case 一般需要配合 break 关键字使用,没有 break 会造成 case 穿透
7.3、循环语句
循环:重复执行一些代码操作
7.3.1、while 循环
while (循环条件) {
重复执行的代码(循环体)
}
continue
:结束本次循环,继续下次循环break
:退出循环
7.3.2、for 循环
for (变量起始值; 终止条件; 变量变化量) {
// 循环体
}
8、数组
8.1、数组是什么
数组是一种可以按顺序保存数据的数据类型
8.2、数组的基本使用
-
声明语法
let 数组名 = [数据1, 数据2, ..., 数据n]
let arr = new Array(数据1, 数据2, ..., 数据n)
-
取值语法
数组名[下标]
8.3、遍历数组
let 数组名 = [数据1, 数据2, ..., 数据n]
for (int i = 0; i < 数组名.length; i++) {
数组名[i]
}
8.4、操作数组
数组的本质就是数据的集合,操作数据无非就是 增 删 改 查 语法:
查 | 查询数组数据 | 数组[下标] |
---|---|---|
改 | 重新赋值 | 数组[下标] = 新值 |
增 | 数组添加新的数据 | arr.push(元素1,元素2,…,元素n) arr.unshift(元素1,元素2,…,元素n) |
删 | 删除数组中的数据 | arr.pop() arr.shift() arr.splice(操作的下标, 删除的个数) |
- 数组.push():方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度(重点)
- 数组.unshift():方法将一个或多个元素添加到数组的开头,并返回该数组的新长度
- 数组.pop():方法从数组中删除最后一个元素,并返回该元素值
- 数组.shift():方法从数组中删除第一个元素,并返回该元素值
- 数组.splice():删除指定元素,第二个参数不写的话,后面的元素会全部删除
9、函数
9.1、函数使用
-
函数的声明语法
function 函数名() { // 函数体 }
-
函数的调用语法
函数名()
-
函数的命名规范:和变量命名基本一致,尽量小驼峰式命名法,前缀应该为动词,命名建议:常用动词约定
动词 含义 can 判断是否可执行某个动作 has 判断是否含义某个值 is 判断是否为某个值 get 获取某个值 set 设置某个值 load 加载某些数据
9.2、函数传参
-
声明语法
function 函数名(参数列表) { // 函数体 }
-
例如
function getSum(num1, num2) { console.log(num1 + num2) }
-
调用语法
函数名(参数列表) getSum(1, 2)
-
形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
-
实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
9.3、函数的返回值
-
语法
return 数据
9.4、作用域
变量的可用性的代码范围就叫做作用域,作用域分为:全局作用域 和 局部作用域
- 全局变量:函数外部 let 的变量,全局变量在任何区域都可以访问和修改
- 局部变量:函数内部 let 的变量,局部变量只在当前函数内部访问和修改
变量的特殊情况:如果函数内部变量没有声明就直接赋值,也可当全局变量看,但是强烈不推荐
9.4.1、变量的访问原则
- 只要是代码,就至少有一个作用域
- 写在函数内部的局部作用域
- 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
- 访问原则:在能访问到的情况下,先局部,局部没有再找全局
9.5、匿名函数
匿名函数:没有名字的函数,无法直接使用
9.5.1、函数表达式
将匿名函数赋值给一个变量,并且通过变量名称进行调用,我们称这个为函数表达式
// 函数声明
let fn = function () {
// 函数体
}
// 函数调用
fn()
9.5.2、立即执行函数
// 写法1
(function () { console.log(11) })();
// 写法2
(function () { console.log(11) }());
避免全局变量之间的污染
10、对象
10.1、什么是对象
- 对象(object):JavaScript 里的一种数据类型
- 可以理解为是一种无序的数据集合,注意数组是有序的数据集合
let obj = {
uname: 'pink老师',
age: 18,
gender: '女'
}
10.2、对象使用
-
对象声明语法
let 对象名 = {} // {}是字面量 let 对象名 = new Object()
-
对象有属性和方法组成
- 属性:信息或叫特征(名词)。比如:手机尺寸、颜色、重量
- 属性都是成对出现的,包括属性名和属性值,它们之间用
:
隔开 - 多个属性之间用
,
隔开 - 属性就是依附再对象上的变量(外面是变量,内部是属性)
- 属性名可以用
""
或''
,一般情况下省略,除非名称遇到特殊符号如空格、中横线等
- 属性都是成对出现的,包括属性名和属性值,它们之间用
- 方法:功能或叫行为(动词)。比如:手机打电话、发短信、玩游戏
- 方法是由方法名和函数两部分构成的,它们之间使用
:
分隔 - 多个属性之间使用英文
,
分隔 - 方法是依附在对象中的函数
- 方法名可以用
""
或''
,一般情况下省略,除非名称遇到特殊符号如空格、中横线等
- 方法是由方法名和函数两部分构成的,它们之间使用
let 对象名 = { 属性名: 属性值, 方法名: 函数 }
- 属性:信息或叫特征(名词)。比如:手机尺寸、颜色、重量
对象的增删改查
查 | 对象名.属性 对象名[‘属性’] |
---|---|
改 | 对象名.属性 = 新值 |
删(了解) | delete 对象名.属性 |
增 | 对象名.新属性 = 新值 |
10.3、遍历对象
注意:对象是无序的键值对,没有规律。不像数组里面有规律的下标
let obj = {
uname: 'pink老师',
age: 18,
gender: '女'
}
// for in 不建议用于遍历数组,大多数用来遍历对象
for (let k in obj) {
// k 是字符串类型
console.log(k) // 打印属性名
console.log(obj[k]) // 打印属性值
}
10.4、内置对象
10.4.1、Math 对象
- 介绍:Math 对象是 JavaScript 提供的一个 ”数学“ 对象
- 作用:提供了一系列做数学运算的方法
random | 生成 0-1 之间的随机数(包含0不包含1) |
---|---|
ceil | 向上取值 |
floor | 向下取整 |
round | 四舍五入取整 |
max | 找最大值 |
min | 找最小值 |
pow | 幂运算 |
abs | 绝对值 |
11、堆栈简介
- 栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。
- 简单数据类型存放到栈里面
- 堆(操作系统):存储复杂数据类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收
- 引用数据类型存放到堆里面
----------- |
| 改 | 对象名.属性 = 新值 |
| 删(了解) | delete 对象名.属性 |
| 增 | 对象名.新属性 = 新值 |
10.3、遍历对象
注意:对象是无序的键值对,没有规律。不像数组里面有规律的下标
let obj = {
uname: 'pink老师',
age: 18,
gender: '女'
}
// for in 不建议用于遍历数组,大多数用来遍历对象
for (let k in obj) {
// k 是字符串类型
console.log(k) // 打印属性名
console.log(obj[k]) // 打印属性值
}
10.4、内置对象
10.4.1、Math 对象
- 介绍:Math 对象是 JavaScript 提供的一个 ”数学“ 对象
- 作用:提供了一系列做数学运算的方法
random | 生成 0-1 之间的随机数(包含0不包含1) |
---|---|
ceil | 向上取值 |
floor | 向下取整 |
round | 四舍五入取整 |
max | 找最大值 |
min | 找最小值 |
pow | 幂运算 |
abs | 绝对值 |
11、堆栈简介
- 栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。
- 简单数据类型存放到栈里面
- 堆(操作系统):存储复杂数据类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收
- 引用数据类型存放到堆里面