ECMAScript(Ci)
简介
- 编程语言 
- 人机交互 
- 弱数据类型 
作用
- 网页特效 
- 表单验证 
- 数据交互 
- 服务端编程 
组成
- ECMAScript(基础语法) 
- Web APIs - DOM(页面文档对象模型) 
- BOM(浏览器对象模型) 
 
引入方式
- 内联(行类) - <标签名 onclick="alert('这是一个弹窗')"></标签名>
- 内部 - <script></script></body>
- 外部 - js文件 
- <script scr="地址"></script></body>
 
结束符
- 分号可加可不加 
输入输出语法
- 输出 - 语法 - 语法1 - document.write(要输出的内容)- 向文档输出 
 
- 语法2 - alert(要输出的内容)- 页面弹出警告框 
 
- 语法3 - console.log(要输出的内容)- 控制台输出(调试用) 
 
 
- 多内容拼接输出: - 一般 - (内容1,内容2)
- 字符串拼接 - (内容1+字符串+内容2)
 
 
- 输入 - 语法1 - prompt()- 在警告窗弹出 
 
 
- 提醒 - 警示框的内容会跳过页面渲染先被执行 
 
变量
- 声明语法 - let 变量名
- 由字母,数字,下划线,$ 组成(不能以数字开头) 
常量
- 声明语法 - const 变量名=值
- 提醒:声明时需赋值 
数据类型
- 分类 - 基本数据类型(栈里存的值) - number数字型 - NaN(非数字型not a number)
 
- string字符串型 - 模板字符串 - (’xx${变量名}xx‘)(用反引号包裹,这里的‘’代表``)
 
- boolean布尔型 - 函数 - Boolean(值)//返回true/false
- 除了0,所有数字都为真 
- 除了空字符串,所有字符串都为真 
- undefined,null,NAN为假 
 
- undefined未定义型 
- null空类型 
 
- 引用数据类型(栈里存的地址>>指向堆里的值) - object对象 - function函数 
- array数组 
 
 
 
- 检测数据类型typeof - 作为运算符 - typeof x
- 函数形式 - typeof(x)
 
- 类型转换 - 输入默认为字符串 
- 方式 - 显式 - 转数字型Number(X) 
- 转整数parseInt(x) 
- 转实数parseFloat(x) 
- 提醒:只能识别数字开头的字符串,从一个非数字字符起,后面全部舍弃(转整/实数) 
 
- 隐式 - 加号&字符串 - 其他数据类型➕字符串类型>>拼接 
- ➕字符串>>转化为数字型 
 
- 其他运算符>>转换为数字型 - ''>>0 
- null>>0 
- undefined>>NAN 
- 特殊:undefined==NAN 
 
 
 
 
运算符
- 算数运算符 - + 
- - 
- * 
- /(非整除) 
- % 
 
- 赋值运算符 - = 
- += 
- -= 
- *= 
- /= 
- %= 
 
- 一元运算符 - 自增++ 
- 自减-- 
- ! 
- 提醒 - 前置>>先赋值 
- 后置>>先运算>>再赋值 
 
 
- 比较运算符 - > 
- < 
- >= 
- <= 
- ==(值相等) 
- ===(全等=值相等+数据类型相等) - NAN!==NAN 
 
- != 
- !== 
- 提醒:不同类型比较会发生隐式转换,最终转化为Number 
 
- 逻辑运算符(返回不是Boolean型) - && 
- || 
- 逻辑中断 - 在&&和||判断中,判断顺序从左到右,当前值已经能决定表达式值时,不再运行后续内容 
- 当逻辑运算符前后两个值都为真时,&&返回最后一个值,||返回第一个值 
 
 
- 三元运算符(同C) 
- 优先级 - ()>一元运算符>算数运算符>比较运算符>相等运算符>逻辑运算符(&&>||)>赋值运算符>逗号运算符 
 
语句
- 关系(表达式包含于语句) - 表达式:可以被求值 
- 语句:不一定有值 
 
- 流程控制语句 - 顺序结构 
- 分支结构 - if语句(范围判断) 
- 三元表达式 
- switch(确定值) - switch(数据)//选择和 数据 全等的 值 执行 { case 值1://值前的空格不能忽略 代码1 break;//退出switch case 值2: 代码1 break; default: 代码3 break; }
 
- 循环结构 - while 
- for 
 
 
数组
- 声明语法 - 字面量声明 - let arr=[x,x,x]
- new Array 
 
- 长度 - arr.length
- 增加元素: - 末尾: - arr.push(元素1,元素2)//加到数组末尾,并返回新长度
- 开头: - arr.unshift(新增内容)//加到数组开头,并返回新长度
 
- 删除元素: - arr.pop()//删除最后一个元素,并返回该元素的值 
- arr.shift()//删除第一个元素,并返回该元素的值 
- arr.splice(起始位置,删除几个元素) 
 
- 排序: - arr.sort()//升序
- arr.sort(function(a,b){return b-a})//降序 
 
- 遍历 
- for/while 
- for(let i in arr){} 
 //i>>下标
 //arr[i]数组元素
函数
- 分类 - 具体名函数 - 声明语法 - function 函数名 (参数1=值,参数2=值)//给形参默认值 { 函数体 return [返回值1,返回值2]//返回多个值(数组) }
 
 
* 调用语法`函数名 ()`- 匿名函数 - 声明语法 (把函数赋值给一个变量) - let 变量名 = function (参数) { 函数体 }
- 调用语法 - 变量名()
 
- 区别 - 具名函数可在声明前使用 
- 匿名函数:先声明才能调用 
 
- 立即执行函数(必需加分号) - 语法1 - (function 函数名(){}) ();
- 语法2 - (function 函数名(){} () );
- 可写成匿名函数 
 
- 作用域 - 全局作用域: - 在<script>标签里面定义的变量 
- 在js文件里面定义的变量 
 
- 局部作用域:函数里定义的(函数内部没有声明,直接赋值为全局变量) 
 
- 提醒 - 没有返回值默认undefined 
- 没有定义形参默认值,其默认值为undefined 
- 形参个数可以不等于实参个数 - 实参多:多的忽略掉 
- 行参多:形参=默认值 
 
 
对象(类似于结构体)
- 语法 - 语法1: 
 - let 对象名={ 属性名:属性值, 方法名:函数 }- 语法2 - let 对象名 = new Object()
 
- 组成 - 属性 - 调用 - 语法1 - 对象名.属性名
- 语法2 - 对象名['属性名']
 
- 增加 - 对象名.新属性名=值
- 删除 - delete 对象名.属性
 
- 方法 - 声明 
 - 方法名: function(){ 函数体 }- 调用 - 对象名.方法名()
 
 
- 遍历 - 语法(在for in 中循环控制变量是字符串型) - for(let k in 对象名){} //k>>属性名 //对象名[k]>>属性值
 
- 内置对象  
- null>>是一个空对象 
Math
- random - 0-10: - Math.floor(Math.random()*(10+1))
- n-m: - Math.floor(Math.random()*(m-n+1))+n