- 1. 计算机基础
- 1.1编程语言和标记语言的区别
- 编程语言有很强的逻辑和行为能力。在编程语言里,你会看到很多if else、for、while等具有逻辑性和行为能力的指令,这是主动的。
- 标记语言不用于向计算机发送指令,常用于格式化链接。标记语言的存在适用来被读取的,他是被动的。
- 1.2计算机组成
- 硬件
- 输入设备
- 输出设备
- CPU
- 硬盘
- 内存
- 软件
- 系统软件
- 应用软件
- 硬件
- 1.3存储单位
- bit<byte<kb<GB<TB<...
- 位(bit): 1bit可以保存一 一个0 或者1 ( 最小的存储单位)
- 字节(Byte): 1B= 8b
- 千字节(KB): 1KB= 1024B
- 兆字节(MB) : 1MB = 1024KB
- 吉字节(GB): 1GB = 1024MB
- 太字节(TB): 1TB= 1024GB
- 1.1编程语言和标记语言的区别
- 2. 初识JavaScript
- 2.1初识JavaScript
- 2.1.1 JavaScript是什么
- JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言
- 2.1.2 JavaScript的作用
- 表单动态校验(密码强度检测)
- 网页特效
- 服务端开发(Node.js)
- 桌面程序(Eleclron)
- App(Cordova)
- 控制硬件-物联网(Ruff)
- 游戏开发(cocos2d-js)
- 2.1.3 浏览器执行 JS简介
- 浏览器分为渲染引擎和JS引擎
- 浏览器本身不会执行JS代码,而是通过内置JavaScript引擎(解释器)来执行JS代码。JS引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行,所以JavaScript语言归为脚本语言,会逐行解释执行。
- 2.1.4 JS的组成
- ECMAScript JavaScript语法
- ECMAScript 规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。
- DOM 页面文档对象模型
- 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。通过DOM提供的接口可以对页面上的各种元素进行操作(大小、位置颜色等)。
- BOM 浏览器对象模型
- BOM (Browser Object Model ,简称BOM)是指浏览器对象模型,它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,比如弹出框、控制浏览器跳转、获取分辨率等。
- ECMAScript JavaScript语法
- 2.1.5 JS初体验
- 行内式
- 直接写到元素内部
- 在HTML里面推荐使用双引号,JS中推荐使用单引号
- 内嵌式
- 写在<head><script>里
- 外部式
- 写在js文件中
- <script src="my.js"></script>
- 中间不许写代码
- 行内式
- 2.1.1 JavaScript是什么
- 2.2JavaScript注释
- 2.2.1单行注释 ctrl+/
- //
- 2.2.2多行注释 ctrl+shift+/
- /* */
- 2.2.1单行注释 ctrl+/
- 2.3JavaScript输入输出语句
- prompt(''); 浏览器弹出输入框,用户可以输入
- alert(''); 浏览器弹出警示框
- console.log(); 浏览器控制台打印输出信息
- 2.1初识JavaScript
- 3. 变量
- 3.1 变量概述
- 用于存放数据的容器,我们通过变量名获取数据,甚至数据可以修改
- 本质:变量是程序在内存中申请的一块用于存放数据的空间
- 3.2 变量的使用
- 3.2.1. 1.声明变量 2.赋值
- var age;//声明一个名称为age的变量
- age=10; // 赋值 把值存入这个变量中
- 3.2.2 变量的初始化
- var myname='一个值';
- 3.2.1. 1.声明变量 2.赋值
- 3.3 变量语法扩展
- 3.3.1 更新变量
- var age=18; age=81;
- 3.3.2 同时声明多个变量
- var age=18, address='地址', gz=2800;
- 3.3.3 声明变量的特殊情况
- 只声明不赋值
- 结果是 程序不知道里面存的是什么 结果是undefind
- 不声明不赋值
- 报错
- 不声明 只赋值
- 正常输出
- 只声明不赋值
- 3.3.1 更新变量
- 3.4 变量命名规范
- 由字母(A-Za-z) 数字(0-9)、 下划线(_ )、美元符号($ )组成,如: usrAge, num01, name
- 严格区分大小写。var app;和var App;是两个变量
- 不能以数字开头。18age 是错误的
- 不能是关键、保留字。例如: var、for. while name也尽量不要用
- 变量名必须有意义。MMD BBD
- 遵守驼峰命名法。首字母小写,后面单词的首字母需要大写。myFirstName
- 3.5 交换变量案例
- var apple1='青苹果';
- var apple2='红苹果';
- var temp;
- temp=apple1;
- apple1=apple2;
- apple2=temp;
- 3.1 变量概述
- 4. 数据类型
- 4.1 数据类型简介
- 4.1 .1为什么需要数据类型
- 为了便于把数据分成所需内存大小不同的数据,充分利用存储空间
- 4.1.2变量的数据类型
- js的变量数据类型是只有程序在运行过程中,根据等号右边的值来确定的
- JavaScript拥有动态类型,变量的数据类型是可以变化的
- 4.1 .1为什么需要数据类型
- 4.2 简单数据类型
- 4.2.1基本数据类型
- Number 数字型,包含整型值和浮点型值,如21、0.21 默认值为0
- Boolean 布尔值类型,如true、 false, 等价于1和0 默认值为false
- String 字符串类型,如"张三"注意咱们js里面,字符串都带引号 默认值为""
- Undefined var a;声明了变量a但是没有给值,此时a = undefined 默认值为undefined
- Null var a=null;声明了变量a为空值 默认值为null
- 4.2.2数字型
- 1.数字型进制
- 数字前面加0是八进制
- 数字前面加0x是十六进制
- 2.数字型范围
- number.max_value
- number.min_value
- 3.数字型三个类型
- infinity 无穷大,大于任何数值
- -infinity 无穷小,小于任何数值
- NaN,Not a number,代表一个非数值
- isNaN()用于判断一个变量是否为非数字的类型,返回true不是数字 返回false是数字
- 1.数字型进制
- 4.2.3字符串类型
- 1.其语法为双引号和单引号 更推荐使用单引号
- 2.字符串引号嵌套 单引号嵌套双引号 双引号嵌套单引号
- 3.字符串转义符\ \n换行符 \\斜杠 \' 单引号 \"双引号 \t tab缩进 \b 空格
- 4.字符串长度
- 检测获取字符串长度 length
- 5.字符串的拼接 + 口诀:数值相加,字符相连
- 6.字符串和变量拼接 口诀:引引加加
- 4.2.4布尔型
- false参与运算 true的值为1 false的值为0
- 4.2.5 如果一个变量声明未赋值 undefined未定义数据类型 和数值相加结果是nan
- 4.2.6 null和数值相加是数字值
- 4.2.1基本数据类型
- 4.3 获取变量数据类型
- 4.3.1typeof 可以检测变量为什么类型
- 4.3.2黑色是字符串型 深蓝色是数字型 蓝色是布尔型 灰色是null和undefined类型
- 根据字面量判断类型
- 4.4 数据类型转换
- 4.4.1什么是数据类型转换
- 把一种数据类型的变量转换成另外一种数据类型
- 4.4.2转换为字符串
- 把数字类型转换为字符串型 变量.toString();
- String(变量)
- 利用+拼接字符串的方法实现
- 4.4.3转换为数字型
- parselnt(string)函数 将string类型转换成数值型 parselnt('78') 会去掉单位 取整
- parseFloat(string)函数 将string类型转换成浮点数数值型 parseFloat('78.31')会去掉单位
- Number()强制转换 将string类型转换为数值型 Number('12')
- 利用算术运算 隐式转换(-*/)自动转换
- 4.4.4转换为布尔型
- Boolean()
- 以下转换为false其余值都转换为true
- Boolean(' ')
- Boolean(0)
- Boolean(NaN)
- Boolean(null)
- Boolean(undefined)
- 以下转换为false其余值都转换为true
- Boolean()
- 4.4.1什么是数据类型转换
- 4.1 数据类型简介
- 5. 拓展阅读
- 5.1 解释型语言和编译型语言
- 翻译器翻译的方式有两种:一个是编译,另一个是解释,两种方式之间的区别在于翻译的时间点不同
- 编译器是在代码执行之前进行编译,生成中间代码文件
- 解释器是在运行时进行及时解释,并立即执行(当编译器以解释方试运行的时候,也称之为解释器)
- 翻译器翻译的方式有两种:一个是编译,另一个是解释,两种方式之间的区别在于翻译的时间点不同
- 5.2 标识符、关键字、保留字
- 5.2.1 标识符
- 标识符就是指开发人员为变量、属性、参数取得名字
- 不能是关键字、保留字
- 5.2.2关键字
- 关键字是指JS本身已经使用了的字,不能再用它们充当变量名、方法名。
- 5.2.3 保留字
- 保留字实际上就是预留的“关键字’,意思是现在虽然还不是关键字,但是未来可能成为关键字,同样不能使用他们当变量名和方法名。
- 5.2.1 标识符
- 5.1 解释型语言和编译型语言
- 6. 运算符
- 运算符被称为操作符,用于实现赋值、比较和执行算术运算等功能的符号。
- 6.1 算术运算符
- + - * / % 取余(取模)
- 浮点数 算术运算里面会有问题 也不能直接比较
- 注意:左右两侧要有空格 算数运算符也有优先级
- 所有的表达式都有返回值
- 6.2递增和递减运算符
- 递增 ++ 递减 --
- 6.2.1 前置递增运算符
- ++num 先自加1 在返回值
- 6.2.2 后置递增运算符
- num++ 先返回值 再自加1
- 单独使用 运算结果相同
- 6.3 比较运算符
- < > >= <= == (默认转换数据类型 会把字符串型的数据转换为数字型)
- !=不等号 === !== 全等 要求两侧的值还有数据类型完全一致
- 6.4 逻辑运算符
- && 逻辑与,简称与 and 有假为假
- || 逻辑或,简称或 or 有真为真
- ! 逻辑非,简称非 not
- 短路运算:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运输右边的表达式的值;
- 逻辑与短路运算
- 如果表达式1结果为真 则返回表达式2
- 如果表达式1结果为假 则返回表达式1
- 逻辑或算路运算
- 如果表达式1结果为真 则返回表达式1
- 如果表达式1结果为假 则返回表达式2
- 逻辑与短路运算
- 6.5 赋值运算符
- = 直接赋值
- += -= 加减一个数后再赋值
- *= /= %= 乘除、取模后再赋值
- 6.6 运算符优先级
-
- 7. 流程控制
- 7.1 流程控制
- 控制我们的代码按照什么结构顺序来执行
- 主要有三种:顺序结构、分支结构、循环结构
- 7.2顺序流程控制
- 最简单、最基本的流程控制,他没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
- 7.3 分支流程控制if语句
- 由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果。
- if(条件表达式) { //条件成立执行的代码语句 }
- if(条件表达式) { //条件成立执行的代码语句 }else{ }
- if(条件表达式1){ //语句1 }else if(条件表达式2){ // 语句2 }else if(条件表达式3) { // 语句3 } else{最后的语句} //适合检查多重条件
- 7.4 三元表达式
- 有三元运算符组成的式子我们称为三元表达式
- 条件表达式 ? 表达式1:表达式2
- 有三元运算符组成的式子我们称为三元表达式
- 7.5 分支流程控制Switch语句
- switch(表达式){ case value1:执行语句1;break; case value2:执行语句2;break;... default :执行最后的语句; }
- 注意:表达式和case里面的值必须是全等=== 如果case里面没有break则不会退出switch
- 7.6 switch和 if 区别
- switch通常处理case为比较确定值的情况,而if...else语句更加灵活,常用于范围判断
- switch效率高 分支少用if 分之多用switch
- 7.1 流程控制
- 8. 循环
- 在程序中,一组被重复执行的语句被称为循环体,能否继续重复执行,取决于循环的终止条件。有循环体及循环的终止条件组成的语句,被称之为循环语句。
- 8.1 for 循环
- for(初始化变量;条件表达式;操作表达式){ //循环体 }
- 初始化变量 就是用var声明的一个普通变量,通常用于作为计数器使用
- 条件表达式 就是用来决定每一次循环是否继续执行 就是终止条件
- 操作表达式 是每次循环最后执行的代码 经常用于我们计数器变量进行更新(递增或者递减)
- for(初始化变量;条件表达式;操作表达式){ //循环体 }
- 8.2 双重for循环
- for(外层初始化变量;外层条件表达式;外层操作表达式 ) { for( 里层初始化变量;里层条件表达式;里层操作表达式 ){ //执行语句 } }
- 8.3 while 循环
- while(条件表达式){ //循环体 }
- 里面应该有计数器 初始化变量
- 里面应该有操作表达式 完成计算器的更新 防止死循环
- while(条件表达式){ //循环体 }
- 8.4 do while 循环
- do while 先执行一次循环体 在判断条件 如果表达式结果为真,则继续执行循环体,否则退出循环
- 至少会执行一次循环体代码
- 8.5 continue break
- 8.5.1 continue
- 退出当前循环 继续执行剩下循环
- 8.5.2 break
- 退出整个循环
- 8.5.1 continue
- 9. 命名规范
- 9.1 标识符命名规范
- 变量、函数的命名必须要有意义
- 变量的名称一般用名词 函数的名称一般用动词
- 9.2 操作符规范
- 左右两边有一个空格
- 9.3 单行注释规范
- // 后面要有一个空格
- 9.1 标识符命名规范
- 10. 数组
- 10.1 数组的概念
- 一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变量名下得优雅方式。
- 10.2 创建数组
- 数组的创建方式
- 利用new创建数组 var arr =new Array();
- 利用数组字面量创建数组 var arr = [];
- 声明数组并赋值称为数组初始化
- 数组中可以存放任意类型的数据
- 数组的创建方式
- 10.3 获取数组中的元素
- 数组的索引
- 索引(下标):用来访问数组元素的序号(数组下标从0开始)
- 数组可以通过索引来访问、设置、修改对应的数组元素 数组名[索引]
- 数组的索引
- 10.4 遍历数组
- 把数组的元素从头到尾访问一次
- 因为数组索引号从0开始,所以a[i]中的i必须从0开始
- 数组的长度 数组名.length
- 10.5 数组中新增元素
- 10.5.1 通过修改length长度新增数组元素
- 可以通过修改length长度新增数组元素 实现扩容目的 length可读写
- 10.5.2 通过修改数组索引新增数组元素
- 可追加并修改数组元素
- 不要直接给数组名赋值 否则会覆盖里面元素
- 10.5.1 通过修改length长度新增数组元素
- 10.6 数组案例
- 冒泡排序 把一系列数据按照一定的顺序进行排序
- 11. 函数
- 11.1 函数的概念
- 封装了一段可以重复执行调用的代码
- 目的:让大量代码重复使用
- 11.2 函数的使用
- 函数的使用分为两步:声明函数 调用函数
- 11.2.1 声明函数
- function 函数名(){ //函数体 }
- function声明函数的关键字 全部小写
- 函数是做某件事情 函数一般是动词
- 函数不调用自己不执行
- 11.2.2 调用函数
- 函数名();
- 11.2.3 函数的封装
- 把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口
- 11.2.1 声明函数
- 函数的使用分为两步:声明函数 调用函数
- 11.3 函数的参数
- 11.3.1 形参和实参
- function 函数名(形参1,形参2.....){ //在声明函数的小括号里面是形参 } 函数名(实参1,实参2....); //在函数调用的小括号里面是实参
- 参数可以有可以没有
- 11.3.2 参数的作用
- 在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去
- 11.3.3 注意
- 多个参数之间用逗号隔开
- 形参可以看做是不用声明的变量
- 11.3.4 函数形参和实参不匹配问题
- 如果实参的个数和形参的个数一致 正常输出结果
- 如果实参的个数多于形参的个数 会取到形参的个数
- 如果实参的个数少于形参的个数 多余的实参定义为undefined 返回NaN
- 11.3.1 形参和实参
- 11.4 函数的返回值
- 11.4.1 return返回值
- 函数只是实现某种功能,最终的结果需要返回给函数的调用者 函数名() 通过return实现的
- 只要函数遇到return就把后面的结果返回给函数的调用者 函数名()=return 后面的结果
- 函数如果有return返回的是return后面的值 没有return返回的是undefined
- 注意事项
- return语句之后的代码不被执行
- return只能返回一个值。如果用逗号隔开多个值;以最后一个为准
- 11.4.1 return返回值
- 11.5 arguments的使用
- 当我们不确定有多少个参数传递的时候,可以使用arguments来获取,在JavaScript中,arguments实际上它是当前函数的一个内置对象。所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参
- 展示形式是一个伪数组,因此可以进行遍历。伪数组具有以下特点
- 具有length属性
- 按索引方式储存数据
- 不具有数组的push,pop等方法
- 只有函数有arguments
- 11.6 函数案例
- 函数可以调用另一个函数方法
- 11.7 函数的两种声明方式
- 利用函数关键字自定义函数(命名函数)
- faction fn(){ }
- 函数表达式(匿名函数)
- var 变量名 = function(){ }; 变量名();
- var fun =function(){} ; fun();
- fun是变量名 不是函数名
- 函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值,而函数表达式里面存的是函数
- 函数表达式也可以进行传递参数
- 利用函数关键字自定义函数(命名函数)
- 11.1 函数的概念
- 12. JavaScript 作用域
- 12.1 作用域
- 一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局限性,增强了程序的可靠性,减少了名字冲突。
- js的作用域(es6)之前:全局作用域 局部作用域
- 全局作用域:整个script标签 或者是一个单独的js文件
- 局部作用域(函数作用域) 在函数内部就是局部作用域 这个代码的名字只能在函数内部起效果和作用
- 12.2 变量的作用域
- 根据作用域的不同我们的变量分为全局变量和局部变量
- 全局变量:在全局作用域下声明的变量在全局下都可以使用 注意在函数内部 没有声明直接赋值的变量也属于全局变量
- 局部变量:在局部作用域下声明的变量 后者在函数内部的变量就是局部变量 注意 函数的形参也可以看做是局部变量
- 从执行效率来看全局变量和局部变量
- 全局变量只有浏览器关闭的时候才会销毁 比较占内存资源
- 局部变量 只能在函数内部使用,当其所在的代码块被执行时,会被初始化;当代码块运行结束后,就会被销毁,因此更节省内存空间
- 根据作用域的不同我们的变量分为全局变量和局部变量
- 12.3 作用域链
- 只要是代码,就至少有一个作用域
- 写在函数内的局部作用域
- 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
- 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链
- 12.1 作用域
- 13. JavaScript 预解析
- 13.1 预解析
- JavaScript代是由浏览器中的JavaScript解析器来执行的。JavaScript解析器在运行JavaScript代码的时候分为两步:预解析和代码执行。
- 预解析 js引擎会把js里面所有的var 还有function提升到当前作用域的最前面
- JavaScript代是由浏览器中的JavaScript解析器来执行的。JavaScript解析器在运行JavaScript代码的时候分为两步:预解析和代码执行。
- 13.2 变量预解析和函数预解析
- 预解析分为变量预解析(变量提升)和函数预解析(函数提升)
- 变量提升 就是把所有的变量声明提升到当前的作用域的最前面 不提升赋值操作
- 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不提升函数
- 函数表达式 调用必须写在函数表达式的下面
- 代码执行 按照代码书写的顺序从上往下执行
- 预解析分为变量预解析(变量提升)和函数预解析(函数提升)
- 13.3 预解析案例
-
- 13.1 预解析
- 14. JavaScript 对象
- 14.1 对象
- JavaScript中,对象是一组无序相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。
- 对象是由属性和方法组成的
- 属性:事物的特征,在对象中用属性来表示(常用名词)
- 方法:事物的行为,在对象中用方法来表示(常用动词)
- 14.2 创建对象的三种方式
- 14.2.1 利用字面量创建对象
- 对象字面量:就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法
- var obj ={ uname: '张三丰’ , age : 18 , sayhi : fuction(){ console.log('hi' ) ; } }
- 里面的属性或者方法我们采用键值对的形式
- 多个属性或者方法中间用逗号隔开
- 方法冒号后面跟的是一个匿名函数
- 使用对象
- 调用对象的属性 我们采用 对象名.属性名 对象名['属性名']
- 调用对象的方法 对象名.方法名()
- 变量、属性、函数、方法的区别
- 变量和属性的相同点
- 它们都是用来存储数据的
- 变量和属性的不同点
- 变量 单独声明并赋值 使用的时候直接写变量名 单独存在
- 属性 在对象里面的不需要声明的 使用的时候必须是 对象.属性
- 函数和方法的相同点
- 都是实现某种功能 做某件事
- 函数和方法的不同点
- 函数时单独声明 并且调用的 函数名() 单独存在的
- 方法 在对象里面 调用的时候 对象. 方法()
- 变量和属性的相同点
- 对象字面量:就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法
- 14.2.2 利用 new object 创建对象
- 我们是利用 等号 = 赋值的方法 添加对象的属性和方法
- 每个属性和方法之间用 分号结束
-
- 14.2.3 利用构造函数创建对象
- 构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,他总与new运算符一起使用。我们把对象中一些公共的属性和方法抽取出来,封装到函数里面
- 构造函数的语法格式
- 构造函数名字首字母要大写
- 构造函数不需要return 就可以返回结果
- 调佣函数返回的是一个对象
- 我们调用构造函数 必须使用 new
- 我们只要new 构造函数名() 调用函数就创建一个对象 zxy{}
- 我们的属性和方法前面必须添加this
-
- 构造函数和对象的区别
- 构造函数 抽象了对象的公共部分,封装到了函数里面,他泛指的某一大类
- 创建对象 特指一个具体的事物,通过new关键字创建对象的过程我们也成为对象实例化
- 14.2.1 利用字面量创建对象
- 14.3 new关键字
- new 构造函数在内存中创建了一个空的对象
- this 就会指向刚才创建的空对象
- 执行构造函数里面的代码 给这个空对象添加属性和方法
- 返回这个对象
- 14.4 遍历对象属性
- for...in 语句 用于对数组或者对象的属性进行循环操作
- for...in 语句 用于对数组或者对象的属性进行循环操作
- 14.1 对象
- 15. JavaScript 内置对象
- 15.1 内置对象
- JavaScript中的对象分为三种:自定义对象、内置对象、浏览器对象
- 前两种对象是JS基础内容,属于ECMAscript;第三个浏览器对象属于我们JS独有的,我们JS api讲解
- 内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能
- 15.2 查文档
- MDN/w3c
- 如何学习
- 查阅该方法的功能
- 查看里面的参数的意义和类型
- 查看返回值的意义和类型
- 通过demo进行测试
- 15.3 Math对象
- Math.max() Math.min() Math.abs() Math.floor() Math.ceil() Math.round()
- Math.random() 返回随机的一个小数 0=< x < 1
- 15.4 日期对象
- Date() 日期对象 是一个构造函数 必须使用new来调用创建我们的日期对象 必须实例化后再使用
- getFullYear() getMonth() getHours ()getMinutes() getSeconds()
- 15.5 数组对象
- 创建数组两种方式 字面量 newArray()
- 检测是否为数组
- instanceof
- Array.isArray(参数)
- 添加数组元素
- 在数组后面添加数组元素方法
- push()在我们数组的末尾 添加一个或者多个数组元素
- push是可以给数组追加新的元素
- push()参数直接写数组元素
- push完毕之后,返回的结果是新数组的长度
- 原数组也会发生变化
- 在数组前面添加数组元素方法
- unshift是可以给数组前面追加新的元素
- unshift()参数可以直接写 数组元素就可以了
- unshift完毕之后,返回的结果是数组的长度
- 原数组也会发生变化
- 在数组后面添加数组元素方法
- 删除数组元素
- pop()可以删除数组的最后一个元素
- pop是可以删除数组的最后一个元素 一次只能删除一个元素
- pop()没有参数
- pop完毕之后,返回的结果是删除的那个元素
- 原数组也会发生变化
- shift()可以删除数组的最后一个元素
- shift是可以删除数组的第一个元素 一次只能删除一个元素
- shift()没有参数
- shift完毕之后,返回的结果是删除的那个元素
- 原数组也会发生变化
- pop()可以删除数组的最后一个元素
- 数组排序
- 冒泡排序只能个位数排序 双位数用下图方法
- 获取数组的索引
- indexof(数组元素)作用就是返回该数组元素的索引号 从前面开始查找
- 它只返回第一个满足条件的索引号
- 他如果在该数组里面找不到元素,则返回的是 -1
- lastIndexof(数组元素)作用就是返回该数组元素的索引号 从后面开始查找
- 它只返回第一个满足条件的索引号
- 他如果在该数组里面找不到元素,则返回的是 -1
- 数组转换为字符串
- 15.6 字符串对象
- 15.6.1 基本包装类型:把简单数据类型包装成了复杂数据类型,这样基本数据就有了属性和方法。三种特殊引用类型:String、Number和Boolean。
- 15.6.2 字符串的不可变
- 指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间
- 因为我们字符串不可变所以不要大量拼接字符串
- 15.6.3 根据字符串返回位置
- 求某个字符串出现的位置和次数
- 15.6.4 根据位置返回字符
- 15.6.5 统计出现次数最多的字符
- 对象['属性名']
- 遍历对象
- 15.6.6 拼接以及截取字符串
- 15.6.7 替换字符串
- replace('被替换字符','替换的字符为') 他只会替换第一个字符
- 15.6.8 split('分隔符')
- 把字符串转换成数组
- 把字符串转换成数组
- 15.1 内置对象
- 16.简单数据类型和复杂数据类型
- 16.1 简单类型与复杂类型
- 简单数据类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型
- 值类型:简单的数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型
- 简单数据类型 string number Boolean undefined null
- 值类型:简单的数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型
- 复杂数据类型又叫做引用类型。
- 引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型 通过new关键字创建对象(系统对象、自定义对象),如object、array、date等。
- 简单数据类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型
- 16.2 堆和栈
- 堆栈空间分配区别:
- 栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈;简单数据类型存放到栈里面
- 堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。 复杂数据类型存放到堆里面
- JavaScript中没有堆栈概念,通过堆栈的方式,可以让大家更容易理解代码
- 堆栈空间分配区别:
- 16.1 简单类型与复杂类型
- 10.1 数组的概念