JavaScript 学习笔记---JavaScript基础

  • 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
  • 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可以操作浏览器窗口,比如弹出框、控制浏览器跳转、获取分辨率等。
      • 2.1.5 JS初体验
        • 行内式
          • 直接写到元素内部
          • 在HTML里面推荐使用双引号,JS中推荐使用单引号
        • 内嵌式
          • 写在<head><script>里
        • 外部式
          • 写在js文件中
          • <script src="my.js"></script>
          • 中间不许写代码
    • 2.2JavaScript注释
      • 2.2.1单行注释 ctrl+/
        • //
      • 2.2.2多行注释 ctrl+shift+/
        • /* */
    • 2.3JavaScript输入输出语句
      • prompt(''); 浏览器弹出输入框,用户可以输入
      • alert(''); 浏览器弹出警示框
      • console.log(); 浏览器控制台打印输出信息
  • 3. 变量
    • 3.1 变量概述
      • 用于存放数据的容器,我们通过变量名获取数据,甚至数据可以修改
      • 本质:变量是程序在内存中申请的一块用于存放数据的空间
    • 3.2 变量的使用
      • 3.2.1. 1.声明变量 2.赋值
        • var age;//声明一个名称为age的变量
        • age=10; // 赋值 把值存入这个变量中
      • 3.2.2 变量的初始化
        • var myname='一个值';
    • 3.3 变量语法扩展
      • 3.3.1 更新变量
        • var age=18; age=81;
      • 3.3.2 同时声明多个变量
        • var age=18, address='地址', gz=2800;
      • 3.3.3 声明变量的特殊情况
        • 只声明不赋值
          • 结果是 程序不知道里面存的是什么 结果是undefind
        • 不声明不赋值
          • 报错
        • 不声明 只赋值
          • 正常输出
    • 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;
  • 4. 数据类型
    • 4.1 数据类型简介
      • 4.1 .1为什么需要数据类型
        • 为了便于把数据分成所需内存大小不同的数据,充分利用存储空间
      • 4.1.2变量的数据类型
        • js的变量数据类型是只有程序在运行过程中,根据等号右边的值来确定的
        • JavaScript拥有动态类型,变量的数据类型是可以变化的
    • 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是数字
      • 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.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)
  • 5. 拓展阅读
    • 5.1 解释型语言和编译型语言
      • 翻译器翻译的方式有两种:一个是编译,另一个是解释,两种方式之间的区别在于翻译的时间点不同
        • 编译器是在代码执行之前进行编译,生成中间代码文件
        • 解释器是在运行时进行及时解释,并立即执行(当编译器以解释方试运行的时候,也称之为解释器)
    • 5.2 标识符、关键字、保留字
      • 5.2.1 标识符
        • 标识符就是指开发人员为变量、属性、参数取得名字
        • 不能是关键字、保留字
      • 5.2.2关键字
        • 关键字是指JS本身已经使用了的字,不能再用它们充当变量名、方法名。
      • 5.2.3 保留字
        • 保留字实际上就是预留的“关键字’,意思是现在虽然还不是关键字,但是未来可能成为关键字,同样不能使用他们当变量名和方法名。
  • 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
  • 8. 循环
    • 在程序中,一组被重复执行的语句被称为循环体,能否继续重复执行,取决于循环的终止条件。有循环体及循环的终止条件组成的语句,被称之为循环语句。
    • 8.1 for 循环
      • for(初始化变量;条件表达式;操作表达式){ //循环体 }
        • 初始化变量 就是用var声明的一个普通变量,通常用于作为计数器使用
        • 条件表达式 就是用来决定每一次循环是否继续执行 就是终止条件
        • 操作表达式 是每次循环最后执行的代码 经常用于我们计数器变量进行更新(递增或者递减)
    • 8.2 双重for循环
      • for(外层初始化变量;外层条件表达式;外层操作表达式 ) { for( 里层初始化变量;里层条件表达式;里层操作表达式 ){ //执行语句 } }
    • 8.3 while 循环
      • while(条件表达式){ //循环体 }
        • 里面应该有计数器 初始化变量
        • 里面应该有操作表达式 完成计算器的更新 防止死循环
    • 8.4 do while 循环
      • do while 先执行一次循环体 在判断条件 如果表达式结果为真,则继续执行循环体,否则退出循环
      • 至少会执行一次循环体代码
    • 8.5 continue break
      • 8.5.1 continue
        • 退出当前循环 继续执行剩下循环
      • 8.5.2 break
        • 退出整个循环
  • 9. 命名规范
    • 9.1 标识符命名规范
      • 变量、函数的命名必须要有意义
      • 变量的名称一般用名词 函数的名称一般用动词
    • 9.2 操作符规范
      • 左右两边有一个空格
    • 9.3 单行注释规范
      • // 后面要有一个空格
  • 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.6 数组案例
      • 冒泡排序 把一系列数据按照一定的顺序进行排序
    • 11. 函数
      • 11.1 函数的概念
        • 封装了一段可以重复执行调用的代码
        • 目的:让大量代码重复使用
      • 11.2 函数的使用
        • 函数的使用分为两步:声明函数 调用函数
          • 11.2.1 声明函数
            • function 函数名(){ //函数体 }
            • function声明函数的关键字 全部小写
            • 函数是做某件事情 函数一般是动词
            • 函数不调用自己不执行
          • 11.2.2 调用函数
            • 函数名();
          • 11.2.3 函数的封装
            • 把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口
      • 11.3 函数的参数
        • 11.3.1 形参和实参
          • function 函数名(形参1,形参2.....){ //在声明函数的小括号里面是形参 } 函数名(实参1,实参2....); //在函数调用的小括号里面是实参
          • 参数可以有可以没有
        • 11.3.2 参数的作用
          • 在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去
        • 11.3.3 注意
          • 多个参数之间用逗号隔开
          • 形参可以看做是不用声明的变量
        • 11.3.4 函数形参和实参不匹配问题
          • 如果实参的个数和形参的个数一致 正常输出结果
          • 如果实参的个数多于形参的个数 会取到形参的个数
          • 如果实参的个数少于形参的个数 多余的实参定义为undefined 返回NaN
      • 11.4 函数的返回值
        • 11.4.1 return返回值
          • 函数只是实现某种功能,最终的结果需要返回给函数的调用者 函数名() 通过return实现的
          • 只要函数遇到return就把后面的结果返回给函数的调用者 函数名()=return 后面的结果
          • 函数如果有return返回的是return后面的值 没有return返回的是undefined
          • 注意事项
            • return语句之后的代码不被执行
            • 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是变量名 不是函数名
          • 函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值,而函数表达式里面存的是函数
          • 函数表达式也可以进行传递参数
    • 12. JavaScript 作用域
      • 12.1 作用域
        • 一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局限性,增强了程序的可靠性,减少了名字冲突。
        • js的作用域(es6)之前:全局作用域 局部作用域
          • 全局作用域:整个script标签 或者是一个单独的js文件
          • 局部作用域(函数作用域) 在函数内部就是局部作用域 这个代码的名字只能在函数内部起效果和作用
      • 12.2 变量的作用域
        • 根据作用域的不同我们的变量分为全局变量和局部变量
          • 全局变量:在全局作用域下声明的变量在全局下都可以使用 注意在函数内部 没有声明直接赋值的变量也属于全局变量
          • 局部变量:在局部作用域下声明的变量 后者在函数内部的变量就是局部变量 注意 函数的形参也可以看做是局部变量
          • 从执行效率来看全局变量和局部变量
            • 全局变量只有浏览器关闭的时候才会销毁 比较占内存资源
            • 局部变量 只能在函数内部使用,当其所在的代码块被执行时,会被初始化;当代码块运行结束后,就会被销毁,因此更节省内存空间
      • 12.3 作用域链
        • 只要是代码,就至少有一个作用域
        • 写在函数内的局部作用域
        • 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
        • 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链
    • 13. JavaScript 预解析
      • 13.1 预解析
        • JavaScript代是由浏览器中的JavaScript解析器来执行的。JavaScript解析器在运行JavaScript代码的时候分为两步:预解析和代码执行。
          • 预解析 js引擎会把js里面所有的var 还有function提升到当前作用域的最前面
      • 13.2 变量预解析和函数预解析
        • 预解析分为变量预解析(变量提升)和函数预解析(函数提升)
          • 变量提升 就是把所有的变量声明提升到当前的作用域的最前面 不提升赋值操作
          • 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不提升函数
        • 函数表达式 调用必须写在函数表达式的下面
        • 代码执行 按照代码书写的顺序从上往下执行
      • 13.3 预解析案例
    • 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.3 new关键字
        • new 构造函数在内存中创建了一个空的对象
        • this 就会指向刚才创建的空对象
        • 执行构造函数里面的代码 给这个空对象添加属性和方法
        • 返回这个对象
      • 14.4 遍历对象属性
        • for...in 语句 用于对数组或者对象的属性进行循环操作

    • 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完毕之后,返回的结果是删除的那个元素
            • 原数组也会发生变化
        • 数组排序

          • 冒泡排序只能个位数排序 双位数用下图方法
        • 获取数组的索引

          • 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('分隔符')
          • 把字符串转换成数组

    • 16.简单数据类型和复杂数据类型
      • 16.1 简单类型与复杂类型
        • 简单数据类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型
          • 值类型:简单的数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型
            • 简单数据类型 string number Boolean undefined null
        • 复杂数据类型又叫做引用类型。
          • 引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型 通过new关键字创建对象(系统对象、自定义对象),如object、array、date等。
      • 16.2 堆和栈
        • 堆栈空间分配区别:
          • 栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈;简单数据类型存放到栈里面
          • 堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。 复杂数据类型存放到堆里面
          • JavaScript中没有堆栈概念,通过堆栈的方式,可以让大家更容易理解代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值