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