JS能做什么
改变HTML内容
改变HTML属性
改变HTML样式
隐藏显示HTML元素
提示
双引号
和单引号
标签js代码块
,在调用时执行分离
了html和代码易于
阅读和维护加速
页面加载提示
不是必需
的。js是html的默认脚本语言
body
元素的底部
,可改善显示速度
,因为脚本编译会拖慢显示
script
标签显示方案
window.alert()
写入警告框document.write()
写入HTML输入innerHTML
写入HTML元素console.log()
写入浏览器控制台提示
document.write()
仅用于测试
计算机程序
时由计算机执行的一系列指令语句
js程序
就是一系列的编程语句提示
web浏览器
执行js代码
混合值
-被称为字面量变量
-变量值,用于储存数据值va
r关键字声明变量,=
用于变量赋值算数运算符
-计算值赋值运算符
-赋值值
标识
被执行的动作//
或/*
与*/
之间的代码被视为注释
,被忽略,不执行
名称
命名
变量及关键词、函数和标签必须
是字母、下划线或美元符号连接
字母、数字、下划线或美元符号不可以
作为首字符大小写敏感
不能
使用连字符-
,它是为减法预留的倾向
于驼峰式写法Unicode
字符集//
/*...*/
阻止
代码执行提示
官方声明
必须
以唯一
的名称标识
标识符
字母
、数字
、下划线
、美元符号
必须
以字母开头$
和_
开头大小写敏感
保留字
无法用作变量名称=
是赋值运算符,理解为把...赋值给变量
字符串
"声明"
变量undefined
逗号
隔开声明多个变量+
运算符被称为级联运算符字符串
操作数
**=
为ES7的实验部分,不建议使用
数值
、字符串值
、数组
、对象
动态类型
数值类型
undefined
清空变量空值
和undefined
不一样string
number
Boolean
undefined
function
object
字符
、数字
、下划线
、美元符号
局部
变量调用
为何
使用函数:定义一次代码,可多次调用开始
时创建
,函数完成
时被删除
容器
"拥有者"
函数定义
禁止
将字符串、数值、布尔值声明为变量页面加载完成
输入字段被修改
按钮被点击
加载时
应该做的事情关闭时
应该做的事情点击按钮时
应该被执行得操作输入数据时
应该被验证得内容执行
js代码调用
js函数分配
自己得事件处理函数阻止
事件被发送或被处理.length
返回字符串长度\'
\"
\\
单引号 双引号 反斜杠+
影响加载速度
===
需要类型和值都相等比较
都是返回新对象,不会替换原有的
length
长度indexof
查找lastIndexOf
返回最后一次出现得索引 未找到返回-1search
无法设置第二个参数,indexof无法设置更大得索引值slice
提取字符串substring
和slice类似,不接受赋值索引substr
类似于slice 第二个参数规定截取部分得长度replace
替换字符串,返回新字符串,默认替换第一个匹配元素 /i 大小写不敏感 /g 全局替换toUpperCase
大小写转换concat
连接字符串String.trim()
删除两端空白符,ie8及以前不支持charat
返回指定下标的字符串charCodeAt
返回指定下标得unicode编码split
字符串转为数组64位浮点数
整数
会被精确到15位
数字内容
,会尝试将字符串转为
数值NaN
指示某个数字不合法,非数值,属于number类型isNaN
判断是否合法infinity
超出最大可能数范围返回,number类型toString
以字符串返回数值toExponential
返回字符串值,四舍五入并使用指数计数法toFixed
返回字符串值,指定位数小数toPrecision
返回字符串值,包含指定数字valueOf
以数值返回数值Number
可用于时间parseInt
只返回收个数字parseFloat
只返回首个数字不可
用于变量,如Number.MAX_VALUE数组
是一种特殊的js对象length
属性 返回数组长度Array.foreach
返利数组push
添加新元素数字索引
命名索引
不支持
关联数组字符串
应使用对象数字
应使用数组避免
new Array()Array.isArray()
instanceOf Array
toString
数组转换为逗号分隔得字符串join
数组元素结合为一个字符串pop
删除最后一个元素push
结尾处添加新元素shift
删除首个数组元素,并把其他元素位移至更低的索引unshift
开头添加新元素,反向位移旧元素delete
运算符 删除元素splice
删除元素、拼接新元素concat
合并数组slice
裁剪数组自动
tostringsort
排序reverse
反转数组Math.max.apply
查询最大值Math.min.apply
查询最小值Array.forEach
为每个元素调用一次函数Array.map
Array.filter
创建包含通过测试得数组元素得新数组Array.reduce
Array.reduceRight
Array.every
检查数组值是否通过测试Array.some
检查某些数组值是否通过了测试Array.indexOf
搜索元素值并返回器位置Array.lastIndexOf
从数组结尾开始搜索Array.find
通过测试函数得第一个数组元素得值Array.findIndex
返回通过测试函数得第一个数组元素得索引一个参数
指定为毫秒存储
为毫秒tostring
自动转换为字符串toUTCString
转换为UTC字符串toDateString
更易读时间字符串ISO日期
2018-01-01 国际标准短日期
01/01/2018或2019/01/01长日期
Feb 19 2018或 19 feb 2019完整日期
Mondy February 25 2015提示
UTC
称世界同一时间、世界标准时间、国际协调时间不带前导零
得月和日会产生错误getDate
以数值返回天 1-31getDay
以数值返回周名 0-6 0周日getFullYear
获取四位得年 yyyygetHours
获取小时 0-23getMilliseconds
获取毫秒getMinutes
过去分 0-59getMonth
获取月 0-11 0是1月getSeconds
获取秒getTime
获取时间 从1970年1月1日至今getUTCXXX
返回UTC格式setDate
以数值1-31设置setFullYear
设置年 可选月和日setHours
设置小时 0-23setMilliSeconds
设置毫秒 0-999setMinutes
设置分 0-59setMonth
设置月 0-11setSeconds
设置秒 0-59setTime
设置事件 从1970年1月1日至今得毫秒数round
四舍五入最接近得整数pow
求幂sqrt
平方根abs
绝对值或正值ceil
上舍入最接近得整数floor
下舍入最接近得整数sin
返回角得正弦cos
返回角得余弦acos
反余弦值asin
反正弦值atan
以介于-PI/2与PI/2弧度之间得数值来返回x得反正切值atan2
返回从X轴到点xy得角度tan
正切min/max
最小值最大值random
0-1之间得随机数常量
Math.random
返回0到1(不包含)之间得随机数Math.floor
返回随机数不具有“真实”
值得即为false
if/else
switch
for
多次循环遍历代码块
for/in
遍历对象属性while
当指定条件为true时循环代码块do/while
指定条件为true时循环代码块
会先执行一次
,然后判断条件break
跳出循环continue
中断此次循环,开始下一个循环5种
包含值数据类型
3种
对象类型
2种
不能包含值得数据类型
constructor
属性
转换
提示
NaN
得数据类型是数值数组
得数据类型是对象日期
得数据类型是对象null
得数据类型是对象undefined
undefined
typeOf
是运算符搜索模式(search pattern)
得字符序列/pattern/modifiers
搜索词/修饰符search
replace
test
搜索字符串,返回true或falseexec
搜索字符串,返回字符串var
声明,会自动变为全局变量请勿
创建全局变量覆盖
window变量或函数覆盖
个人得全局变量和函数始于
被创建时完成时
被删除关闭时
被删除之前
使用它Hosting(提升)
是js将所有声明提升到当前作用域顶部得默认行为let const
声明得变量和常量不会被提升声明
会被提升,初始化
不会被提升必须
在顶部声明未声明
的变量脚本
或者函数开头
添加"Use Strict",全局作用域局部作用域
只会
对理解其含义的编译器产生影响严格模式
不允许
事项
this
是全局变量,在严格模式下,为undefined
未来保障
,不允许使用未来预留的关键字
提示
Use Strict
指令只能在脚本或函数的开头被识别this
指的是所属的对象
所有者对象
全局对象
全局对象
undefined
接收事件的元素
call apply
方法参数
调用对象方法let、const
let
块作用域变量、const
常量- 浏览器 | 年数 |
---|---|
chrome 49 | 2016/3 |
IE/Edge12 | 2015/7 |
Firefox44 | 2015/1 |
Safari 11 | 2017/9 |
Opera36 | 2016/3 |
let
和var
关键字
const
和let
相似const
在声明时必须
赋值原始值
,原始值不允许更改更改
属性,但不能
重新赋值更改
,但不能
重新赋值- 浏览器 | 年数 |
---|---|
chrome 49 | 2016/3 |
IE/Edge11 | 2013/10 |
Firefox36 | 2015/2 |
Safari 10 | 2016/9 |
Opera36 | 2016/3 |
注意
作用域或块
中,不允许
将let
和var
变量重新声明
或赋值
给const
作用域或块
中,不允许
为已有的const变量重新声明或赋值
不同
的作用域中,const
允许被重新声明const
声明不会被提升到顶端,必须在使用前声明调试器
中设置断点debugger
关键字约定
编程的样式指导方针
,原则:
确保质量
驼峰式大小写
字母
开头始终
在运算符周围及逗号之后添加空格始终
对代码块缩进使用4个空格制表符
,不同编译器对tab的解释也不相同规则
单条语句
复杂语句
规则
80
约定
外部文件
,type不是必须大小写敏感
.html
.css
.js
小写
文件名影响
很小空格
对小段脚本不重要优先考虑
可读性,缩小更大型的生产脚本避免全局变量
始终声明局部变量
在顶部声明
初始化变量
不要声明
数值、字符串或布尔对象,会影响
执行速度请勿
使用 new Object()
{}
代替new Object()“”
代替new String()0
代替 new Number()false
代替new Boolean()[]
代替new Array()/()/
代替 new RegExp()function(){}
代替 new Function()自动
类型转换Parameter Defaults
undefined
,最好是设置默认值default
结束 switcheval()
常见错误
意外使用
赋值运算符松散
的比较加法
用于加数值级联
用于加字符串64位
的浮点数反斜杠
错位分号
return
语句进行换行
命名索引
访问数组
逗号
结束定义Undefined
不是null块级
范围减少
循环中的活动减少
DOM访问缩减
DOM规模避免
不必要的变量延迟
js加载避免
使用with“Use Strict”
指令 严格模式执行String.trim()
删除字符串两端空格Array.isArray()
检查对象是否为数组Array.forEach()
为每个数组元素调用一次函数Array.map()
为每个元素调用函数Array.filter()
为每个元素调用函数,返回新数组Array.reduce()
确定数组中所有数的总和Array.reduceRight()
确认数组中所有数的总和Array.every()
检查是否所有值搜超过18Array.some()
检查某些值是否超过18Array.indexOf()
查找某个元素值并返回其位置Array.lastIndexOf()
从数组结尾处开始检索JSON.parse()
将文本转化为js对象JSON.stringify()
js对象转换为文本Date.now()
返回毫秒数Getter
和Setter
定义对象方法Object.defineProperty()
定义对象属性或更改属性的值和或元数据[]
尾随逗号
字面量
保留字
charAt
返回字符串指定索引不允许
尾随逗号\
方法没有普遍支持+
连接符允许
保留字作为属性名称let
允许使用块作用域声明变量const
允许声明变量指数运算符
取幂运算符将第一个操作数提升到第二个操作数的幂默认参数值
允许参数有默认值Array.find()
返回通过测试的第一个元素的值Array.findIndex()
返回通测试的第一个元素的索引数字属性
数字方法
Number.isInteger()
检查是否是整数Number.isSafeInteger()
检查是否是双精度数的整数全局方法
isFinite()
参数为Infinity或NaN,返回falseisNaN()
参数为NaN,返回true箭头函数
简短
的语法编写函数表达式this
,不适合定义对象方法使用前
定义const
比var
更安全
,函数表达式始终是常量值储存
和传输数据
的格式数据
到网页时使用JavaScript Object Notation
轻量级
的数据交换格式独立
于语言*语法
来自JS对象符号语法,但JSON格式
是纯文本名称/值
对逗号
分割花括号
保存对象方括号
保存数组break
终止switch或循环continue
跳出循环并在顶端开始debugger
停止运行js,并调用调试函数(如果可用)do...while
执行语句块,并在条件为真时重复代码块for
标记需要被执行的语句块,只要条件为真function
声明函数if...else
标记需要执行的语句块,根据某个条件return
退出函数switch
标记需要执行的语句块,根据不同的情况try...catch
对语句块实现错误处理var
声明变量