1 - JavaScript基础

1、JavaScript 介绍

1.1、JavaScript 是什么

1.1.1、JavaScript(是什么?)

是一种运行在客户端(浏览器)的编程语言,实现人机交互效果

1.1.2、作用(做什么?)

  • 网页特效(监听用户的一些行为让网页作出相应的反馈)
  • 表单验证(针对表单数据的合法性进行判断)
  • 数据交互(获取后台的数据,渲染到前端)
  • 服务端编程(node.js)

请添加图片描述

1.1.3、JavaScript 的组成(有什么?)

请添加图片描述

  • ECMAScript
    • 规定了 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>

注意事项

  1. 我们将 <script> 放在 HTML 文件的底部附件的原因是浏览器会按照代码在文件中的顺序加载 HTML。
  2. 我们如果先加载的 JavaScript 期望修改其下方的 HTML,那么它可能由于 HTML 尚未被加载而失效。
  3. 因此,将 JavaScript 代码放在 HTML 页面的底部附件通常是最好的策略。

1.2.2、外部 JavaScript

代码写在以 .js 结尾的文件里

语法:通过 script 标签,引入到 html 页面中

<body>
    <!-- 通过 src 引入外部 js 文件 -->
    <script src="my.js"></script>
</body>

注意事项

  1. script 标签中间无需写代码,否则会被忽略!
  2. 外部 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、变量命名规则与规范

目标:能写出符合规范的变量名

  1. 规则:必须遵守,不遵守报错

    • 不能用关键字

      • 关键字:有特殊含义的字符,JavaScript 内置的一些英文词汇。例如:letvariffor
    • 只能用下**划线、字母、数字、$**组成,且数字不能开头

    • 字母严格区分大小写,如 Age 和 age 是不同的变量

  2. 规范:建议,不遵守不会报错,但不符合业内通识

    • 起名要有意义

    • 遵守小驼峰命名法

      • 第一个单词首字母小写,后面每个单词首字母大写。例如:userName

2.5、变量拓展 let 和 var 的区别

letvar 区别

在较旧的 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 运算符可以返回被检测的数据类型。它支持两种语法形式:

  1. 作为运算符:typeof x(常用写法)
  2. 函数形式: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 型

''0undefinednullfalseNaN 转换为布尔型值后都是 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一真则真
!逻辑非取反truefalsefalsetrue真变假,假变真

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 (数据) {
    case1:
        代码1
        break
    case2:
        代码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、堆栈简介

  • 栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。
    • 简单数据类型存放到栈里面
  • 堆(操作系统):存储复杂数据类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收
    • 引用数据类型存放到堆里面
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值