JavaScript 对象
1、全局:可用于所有内建的JavaScript对象
• 全局属性
undefined
:存放 JavaScript 中未定义的值
undefined
//一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性
• 全局方法
parseInt()
:解析一个字符串,并返回一个整数
parseInt(string,radix);
//*string:要被解析的字符串
*radix 要解析的数字的基数(介于2~36之间)
2、Array:在单个的变量中存储多个值
new Array();
new Array(size);
new Array(element0, element1, ..., elementn);
//*size:期望的数组元素个数
//*element:参数列表(新数组的元素)
• Array对象方法
concat()
:连接两个或多个数组
arrayObject.concat(array1,array2,……);
//*arrayX:该参数可以是具体的值,也可以是数组对象,可以是任意多个
filter()
:筛选指定数组中符合条件的所有元素,创建一个新的数组
arrayObject.filter(function(currentValue,index,arr), thisValue);
//function(currentValue,index,arr):数组中的每个元素都会执行这个函数
//*currentValue:当前元素的值
*index 当前元素的索引值
*arr 当前元素属于的数组对象
*thisValue 对象作为该执行回调时使用,传递给函数,用作 "this" 的值;如果省略了 thisValue ,"this" 的值为 "undefined"
join()
:把数组中的所有元素组合成一个字符串并返回
arrayObject.join(separator);
*separator 指定要使用的分隔符(默认使用逗号)
pop()
:删除并返回数组的最后一个元素
arrayObject.pop();
push()
:向数组的末尾添加一个或多个元素,并返回新的长度
arrayObject.push(newelement1, newelement2, ……);
//*newelement1:要添加到数组的第一个元素
*newelementX 可添加多个元素
reverse()
:颠倒数组中元素的顺序并返回
arrayObject.reverse();
shift()
:把数组的第一个元素从其中删除,并返回第一个元素的值
arrayObject.shift();
slice()
:从已有的数组中返回选定的元素
arrayObject.slice(start,end);
//*start:规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置
*end 规定从何处结束选取。该参数是数组片断结束处的数组下标;如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素;如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素
sort()
:对数组的元素进行排序
arrayObject.sort(sortby);
*sortby 规定排序顺序的函数
splice()
:向/从数组中添加/删除项目,然后返回被删除的项目
arrayObject.splice(index, howmany, item1, item2, ……);
//*index:整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置
//*howmany:要删除的项目数量,如果设置为 0,则不会删除项目
*itemX 向数组添加的新项目
unshift()
:向数组的开头添加一个或更多元素,并返回新的长度
arrayObject.unshift(newelement1, newelement2, ……);
//*newelement1:要添加到数组的第一个元素
*newelementX 可添加多个元素
3、Boolean:仅表示两个值true/false
new Boolean(value); //构造函数
Boolean(value); //转换函数
//*value:由对象存放的值或者要转换成布尔值的值
4、Date:处理日期和时间
new Date(); //当前日期和时间
new Date(milliseconds); //返回从1970年1月1日至今的毫秒数
new Date(dateString);
new Date(year, month, day, hours, minutes, seconds, milliseconds);
• Date对象方法
getDay()
:返回表示星期的某一天的数字 (0~6)
dateObject.getDay();
getTime()
:返回距 1970 年 1 月 1 日之间的毫秒数
dateObject.getTime();
5、Math:执行数学任务
var x = Math.PI; //返回PI
var y = Math.sqrt(16); //返回16的平方根
• Math对象方法
floor()
:返回小于或等于参数的最大整数
Math.floor(x);
//*x:任意数值或表达式
round()
:把一个数字舍入为最接近的整数
Math.round(x);
//*x:数字
6、Number:原始数值的包装对象
var myNum=new Number(value);
var myNum=Number(value);
//*value:要创建的数值或要转换成数字的值
7、String:处理文本(字符串)
new String(s);
String(s);
//*s:要存储在对象中或要转换成原始字符串的值
• String对象方法
match()
:在字符串内检索指定的值,或找到正则表达式的匹配
stringObject.match(searchvalue);
stringObject.match(regexp);
//*searchvalue:规定要检索的字符串值
//*regexp:规定要匹配的模式的 RegExp 对象(如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象)
replace()
:在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
stringObject.replace(regexp/substr, replacement);
stringObject.replace(/……/, "……"); //替换第一个匹配的子串
stringObject.replace(/……/g, "……"); //全局,替换所有匹配的子串
//*regexp/*substr:规定子字符串或要替换的模式的 RegExp 对象
//*replacement:一个字符串值,规定了替换文本或生成替换文本的函数
$1$2……$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本
$& 与 regexp 相匹配的子串
$` 位于匹配子串左侧的文本
$' 位于匹配子串右侧的文本
$$ 直接量符号
split()
:把一个字符串分割成字符串数组并返回
stringObject.split(separator,limit);
stringObject.split(""); //分割每个字符
stringObject.split("c"); //将某个字符转换为分隔符,
*separator 字符串或正则表达式,从指定的地方分割字符串(string)
*limit 限定返回的数组的最大长度(number)
8、RegExp:正则表达式,匹配字符串的执行模式
/pattern/attributes
new RegExp(pattern, attributes);
//*pattern:一个字符串,指定正则表达式的模式或其他正则表达式
*attributes 一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配(如果 pattern 是正则表达式,而不是字符串,则必须省略该参数)
• RegExp对象方法
test()
:检测一个字符串是否匹配某个模式,并返回 true 或 false
RegExpObject.test(string);
//*string:要检测的字符串
★ 常用正则表达式:
// YYYY-MM-DD(简单位数验证)
/^\d{4}-\d{2}-\d{2}$/
// YYYY-MM-DD(考虑闰年)
/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/
// YYYY-/.MM-/.DD(考虑闰年)
/^(?:(?!0000)[0-9]{4}([-/.])(?:(?:0[1-9]|1[0-2])([-/.])(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])([-/.])(?:29|30)|(?:0[13578]|1[02])([-/.])31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.])02([-/.])29)$/
// YYYY-/.M(M)-/.D(D)(考虑闰年)
/^(?:(?!0000)[0-9]{4}([-/.])(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.])0?2\2(?:29))$/
// DD/MM/YYYY(考虑闰年)
/^(((0[1-9]|[12][0-9]|3[01])/((0[13578]|1[02]))|((0[1-9]|[12][0-9]|30)/(0[469]|11))|(0[1-9]|[1][0-9]|2[0-8])/(02))/([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}))|(29/02/(([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00)))$/
// D(D)-/.M(M)-/.YYYY(考虑闰年)
/^(?:(?:(?:0?[1-9]|1[0-9]|2[0-8])([-/.])(?:0?[1-9]|1[0-2])|(?:29|30)([-/.])(?:0?[13-9]|1[0-2])|31([-/.])(?:0?[13578]|1[02]))([-/.])(?!0000)[0-9]{4}|29([-/.])0?2([-/.])(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00))$/
// hh:mm:ss(24小时制)
/^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/
Browser 对象
1、history
:包含用户(在浏览器窗口中)访问过的 URL
• history对象方法
back()
:加载history列表中的前一个URL
history.back();
forward()
:加载history列表中的下一个URL
history.forward();
go()
:加载history列表中的某个具体页面
history.go(number|URL);
//*number:要访问的URL在列表中的相对位置
//*URL:要访问的URL或子串
2、location
:包含有关当前 URL 的信息
• location对象方法
assign()
:加载一个新的文档
location.assign(URL);
*URL 要导航到的页面的URL
reload()
:重新加载当前文档
location.reload(force);
*force true:始终从服务器重新加载 false|空:可以从浏览器缓存重新加载
replace()
:用一个新文档取代当前文档
location.replace(newURL);
*newURL 要导航到的页面的URL
3、window
:表示浏览器中打开的窗口
• window对象方法
alert()
:显示带有一条指定消息和一个OK按钮的警告框
alert(message);
//*message:要显示的纯文本(非HTML文本)
clearInterval()
:取消由 setInterval() 函数设定的定时执行操作
clearInterval(id_of_setinterval);
//*id_of_setinterval:调用 setInterval() 函数时所获得的返回值,使用该返回标识符作为参数,可以取消该 setInterval() 所设定的定时执行操作
close()
:关闭浏览器窗口
window.close();
open()
:打开一个新的浏览器窗口或查找一个已命名的窗口
window.open(URL,name,features,replace);
*URL 声明要在新窗口中显示的文档的URL(url)
*name 声明新窗口的名称(name)
*features 声明新窗口要显示的标准浏览器的特征(features)
*replace (true - URL:替换浏览历史中的当前条目 false - URL:在浏览历史中创建新的条目)
setTimeout()
:在指定的毫秒数后调用函数或计算表达式
setTimeout(code, milliseconds, param1, param2, ……);
setTimeout(function, milliseconds, param1, param2, ……);
//*code|*function:要调用一个代码串,也可以是一个函数
*milliseconds 执行代码串或调用函数需要等待的时间,以毫秒计(默认值:0)
*param 传给执行函数的其他参数(IE9 及其更早版本不支持该参数)
setInterval()
:按照指定的周期(以毫秒计)来调用函数或计算表达式
setInterval(code, milliseconds);
setInterval(function, milliseconds, param1, param2, ...)
//*code|*function:要调用一个代码串,也可以是一个函数
//*milliseconds:周期性执行或调用 code/function 之间的时间间隔,以毫秒计
*param 传给执行函数的其他参数(IE9 及其更早版本不支持该参数)
DOM 对象
1、console
:提供访问浏览器调试模式的信息到控制台
• console对象方法
log()
:在控制台输出信息(该方法对于开发过程进行测试很有帮助)
console.log(message);
//在浏览器中按下 F12 或 Ctrl+Shift+i 打开控制台,可利用此方法对当前页面的源代码进行JS调试
2、document
:从脚本中对HTML页面的所有元素进行访问
• document对象方法
getElementById()
:返回对拥有指定ID的第一个对象的引用
document.getElementById(id);
//*id:元素ID属性值
getElementsByName()
:返回带有指定名称的对象的集合
document.getElementsByName(name);
//*name:元素的名称
write()
:向文档写入HTML表达式或JavaScript代码
document.write(exp1,exp2,exp3,……);
*exp 要写入的输出流,多个参数可以列出,他们将按出现的顺序被追加到文档中
3、Element:代表着一个 HTML 元素
• Element对象属性
innerHTML
:设置或返回表格行的开始和结束标签之间的 HTML
elementObject.innerHTML=text;
//*text:返回到elementObject中的HTML文本
★ 返回/写入对比:
操作 | 效果 |
---|---|
return xxx | 返回值,存储在参数中,不写入HTML |
$(xxx).text() | 返回文本内容,会删除HTML标记 ;设置文本内容,写入原HTML,会覆盖 |
xxx.innerHTML = xxx | 返回或设置HTML内容,写入原HTML,会覆盖 |
$(xxx).html() | 返回或设置HTML内容,写入原HTML,会覆盖 |
document.write(xxx) | 返回或设置HTML/JavaScript,写入原HTML,会覆盖 |
• Element对象方法
getAttribute()
:返回指定属性名的属性值
elementObject.getAttribute(attributename)
//*attributename:需要获得属性值的属性名称
4、Event:代表事件的状态,通常与函数结合使用
eventObject.eventHandler=function(){……};
• 鼠标事件
eventHandler | 事件描述 |
---|---|
onclick | 当对象被点击时发生 |
oncontextmenu | 当对象被右击时触发并打开上下文菜单 |
ondblclick | 当对象被双击时发生 |
onmousedown /onmouseup | 当在对象上按下/松开鼠标按键时发生 |
onmouseenter /onmouseleave | 当鼠标指针移到/移出对象时发生(不冒泡) |
onmouseover /onmouseout | 当鼠标指针移到/移出对象时发生 |
onmousemove | 当鼠标指针在对象内移动时发生 |
★ 鼠标事件触发顺序:
click事件 | focus事件 |
---|---|
mousedown → mouseup → click | mousedown → focus → mouseup → click |
• 键盘事件
eventHandler | 事件描述 |
---|---|
onkeydown | 当键盘按键被按下时发生(不区分大小写) |
onkeypress | 当键盘按键被按下并松开时发生(仅识别数字/字母键) |
onkeyup | 当已按下的键盘按键被松开时发生 |
• 框架事件
eventHandler | 事件描述 |
---|---|
onabort | 当图像的加载被中断时触发 |
onbeforeunload | 当将要离开当前页面时触发 |
onerror | 当加载外部文件发生错误时触发 |
onhashchange | 当当前 URL 的锚 "#……" 发生改变时触发 |
onload | 当页面或图像首次加载完成后触发(读取缓存不触发) |
onunload | 当离开当前页面时触发(无法缓存页面) |
onpageshow | 当页面或图像每次加载完成后触发 |
onpagehide | 当离开当前页面时触发 |
onresize | 当窗口或框架被调整大小时发生 |
onscroll | 当文档被滚动时触发 |
• 表单事件
eventHandler | 事件描述 |
---|---|
onchange | 当表单元素的内容改变时发生 |
onfocus | 当对象获得焦点时发生 |
onblur | 当对象失去焦点时发生 |
onfocusin | 当元素即将获得焦点时触发(不冒泡) |
onfocusout | 当元素即将失去焦点时触发(不冒泡) |
oninput | 当用户输入时触发 |
onreset | 当表单被重置后触发 |
onsearch | 当向搜索域输入文本时触发 |
onselect | 当文本框中的文本被选中时发生 |
onsubmit | 当表单被提交时触发 |
• 剪贴板事件
eventHandler | 事件描述 |
---|---|
oncopy | 当用户拷贝元素的内容时触发 |
oncut | 当用户剪切元素的内容时触发 |
onpaste | 当用户粘贴元素的内容时触发 |
• 打印事件
eventHandler | 事件描述 |
---|---|
onafterprint | 当页面已经开始打印时,或打印窗口已经关闭时触发 |
onbeforeprint | 当页面即将开始打印时触发 |
• 拖动事件
eventHandler | 事件描述 |
---|---|
ondragstart | 当元素或者选取的文本开始拖动时触发(作用于拖动目标) |
ondrag | 当元素或者选取的文本正在拖动时触发(作用于拖动目标) |
ondragend | 当用户完成拖动时触发(作用于拖动目标) |
ondragenter | 当拖动对象进入有效的放置目标时触发(作用于放置目标) |
ondragleave | 当拖动对象离开放置目标时触发(作用于放置目标) |
ondragover | 当拖动对象在放置目标内拖动时触发(作用于放置目标) |
ondrop | 当拖动对象完成放置时触发(作用于放置目标) |
• 多媒体事件
eventHandler | 事件描述 |
---|---|
onabort | 当视频/音频终止加载时触发 |
onloadstart | 当浏览器开始寻找指定视频/音频触发 |
ondurationchange | 当视频/音频的时长发生变化时触发 |
onloadedmetadata | 当指定视频/音频的元数据加载后触发 |
onloadeddata | 当浏览器加载视频/音频当前帧时触发 |
onprogress | 当浏览器下载指定的视频/音频时触发 |
oncanplay | 当用户可以开始播放视频/音频时触发 |
oncanplaythrough | 当视频/音频可以正常播放且无需停顿和缓冲时触发 |
onended | 当视频/音频播放结束时触发 |
onerror | 当视频/音频数据加载期间发生错误时触发 |
onpause | 当视频/音频暂停时触发 |
onplay | 当视频/音频开始播放时触发 |
onplaying | 当视频/音频暂停或者在缓冲后准备重新开始播放时触发 |
onratechange | 当视频/音频的播放速度发生改变时触发 |
onseeking | 当用户开始重新定位视频/音频时触发 |
onseeked | 当用户重新定位视频/音频的播放位置后触发 |
onstalled | 当浏览器获取媒体数据但媒体数据不可用时触发 |
onsuspend | 当浏览器读取媒体数据中止时触发 |
ontimeupdate | 当视频/音频当前的播放位置发送改变时触发 |
onvolumechange | 当视频/音频的音量发生改变时触发 |
onwaiting | 当视频由于要播放下一帧而需要缓冲时触发 |
HTML 对象
1、style
:一个单独的样式声明
document.getElementById("id").style.property="value";
//*property:CSS属性(需转换为camelCase命名)
//*value:设置对应的属性值
JavaScript 语句
1、条件语句:基于不同的条件来执行不同的动作
if
:只有当指定条件为true时,使用该语句来执行代码
if (条件) {
只有当条件为 true 时执行的代码块
}
if……else
:在条件为true时执行代码,在条件为false时执行其他代码
if (条件) {
当条件为 true 时执行的代码块
}
else {
当条件为 false 时执行的代码块
}
if……else if……else
:选择多个代码块之一来执行
if (条件1) {
当条件1为 true 时执行的代码块
}
else if (条件2) {
当条件2为 true 时执行的代码块
}
else {
当条件1和条件2都为 false 时执行的代码块
}
switch
:选择要执行的多个代码块之一
switch (变量) {
case 值1:
若变量等于值1则执行的代码块
break;
case 值2:
若变量等于值2则执行的代码块
break;
……
default:
当匹配不存在时执行的代码块
}
语句 | 适用场合 |
---|---|
if | 布尔值;动态/区间的值;复杂的逻辑关系;选项数量小于5个 |
switch | 整数/字符串;固定/有限的值;选项数量(含default)大于5个 |
2、循环语句:将代码块执行指定的次数
for
:循环代码块一定的次数
for (变量; 条件; 增值) {
被执行的代码块
}
*变量:在循环开始前执行(可选,可初始化任意或多个值)
*条件:定义运行循环的条件(可选,若省略则需提供break)
*增值:在循环已被执行之后执行(可选)
for……in
:循环遍历数组或者对象的属性
for (变量 in 对象) {
在此执行代码
}
//*变量:指定的变量,可以是数组元素或对象的属性
while
:当指定的条件为true时循环指定的代码块
while (条件) {
需要执行的代码
}
do……while
:先执行一次代码块,当条件为true时再重复这个循环
do {
需要执行的代码
}
while (条件);
★ 遍历方法性能比较:
方法 | 语法 | 短循环等级 | 长循环等级 |
---|---|---|---|
for | for (var i = 0, len = arr.length; i < len; i++) {……} | 1 | 1 |
for | for (var i = 0; i < arr.length; i++) {……} | 2 | 2 |
for | for (var i = 0; arr[i] != null; i++) {……} | 3 | 3 |
forEach | Array.prototype.forEach.call(arr,function(el){……}); | 4 | 7 |
forEach | arr.forEach(function(e){……}); | 5 | 6 |
map | arr.map(function(n){……}); | 6 | - |
for of | for (x of arr) {……} | 7 | 4 |
for of | for (let x of arr) {……} | 8 | 5 |
for in | for (x in arr) {……} | 9 | - |
检测数组元素 | 作用 | 返回 | 参数 |
---|---|---|---|
every() | 使用指定函数检测数组中的所有元素 | true/false | function(currentValue,index,arr), thisValue |
filter() | 检测数组中符合条件的所有元素 | 新数组 | function(currentValue,index,arr), thisValue |
some() | 使用指定函数检测数组中的每个元素 | true/false | function(currentValue,index,arr), thisValue |
遍历执行函数 | 作用 | 返回 | 参数 |
find() | 为数组中的每个元素依次执行函数 | 元素值/undefined | function(currentValue,index,arr), thisValue |
findIndex() | 为数组中的每个元素依次执行函数 | 索引/-1 | function(currentValue,index,arr), thisValue |
forEach() | 调用数组的每个元素传递给回调函数 | 函数执行结果 | function(currentValue,index,arr), thisValue |
map() | 按照原始数组元素顺序依次处理元素 | 函数执行结果 | function(currentValue,index,arr), thisValue |
判断包含元素 | 作用 | 返回 | 参数 |
includes() | 判断一个数组是否包含指定的值 | true/false | searchElement, fromIndex |
indexOf() | 从头到尾地检索数组是否含有某个元素 | 索引/-1 | item, start |
lastIndexOf() | 从尾到头地检索数组是否含有某个元素 | 索引/-1 | item, start |
转换为字符串 | 作用 | 返回 | 参数 |
join() | 把数组转换为一个字符串,指定分隔符 | 字符串 | separator |
toString() | 把数组转换为一个字符串,逗号分隔 | 字符串 | / |
valueOf() | 返回数组的原始值,逗号分隔 | 字符串 | / |
JavaScript 运算符
※ 建议在运算符前后都空一格
1、算术运算
符号 | 含义 | 示例(x=5) | 结果 | 优先级 |
---|---|---|---|---|
++ | 后置递增 ...++(先赋值后自增) | y=x++ | y=5 x=6 | 1 |
前置递增 ++...(先自增后赋值) | y=++x | x=6 y=6 | 2 | |
-- | 后置递减 ...--(先赋值后自减) | y=x-- | y=5 x=4 | 1 |
前置递减 --...(先自减后赋值) | y=--x | x=4 y=4 | 2 | |
** | 幂 | y=x**2 | y=25 | 3 |
* | 乘 | y=x*3 | y=15 | 4 |
/ | 除 | y=x/2 | y=2.5 | 4 |
% | 求余(保留整数) | y=x%3 | y=2 | 4 |
+ | 加 | y=x+3 | y=8 | 5 |
连接 | "5"+"5" | 55 | ||
- | 减 | y=x-3 | y=2 | 5 |
2、二进制位运算
符号 | 含义 | 示例 | 转换 | 优先级 |
---|---|---|---|---|
~ | 二进制位非(占位数值取反) | ~9=6 | 9→00001001 6←00000110 | 2 |
<< | 二进制数左移n位 | 9<<3=72 (左移3位) | 9→00001001 72←01001000 | 6 |
>> | 二进制数带符号右移n位 | 21>>3=2 (带符号右移3位) | 21→00010101 2←00000010 | 6 |
>>> | 二进制数无符号右移n位 | 21>>>3=2 (无符号右移3位) | 21→00010101 2←00000010 | 6 |
& | 二进制位与(仅当对应位均为1时,结果位才为1) | 9&21=1 | 9→00001001 21→00010101 1←00000001 | 9 |
^ | 二进制位异或(对应位相异结果位为1,相同为0) | 9^21=28 | 9→00001001 21→00010101 28←00011100 | 10 |
| | 二进制位或(当对应位有1时,结果位即为1) | 9|21=29 | 9→00001001 21→00010101 29←00011101 | 11 |
3、逻辑运算
符号 | 含义 | 示例 | 结果 | 优先级 |
---|---|---|---|---|
! | 逻辑非(取反) | !true | false | 2 |
&& | 逻辑与(仅当都为truthy时,结果才为truthy) | true&&true true&&false | true false | 12 |
|| | 逻辑或(当有truthy时,结果即为truthy) | true||false false||false | true false | 13 |
4、比较运算
符号 | 含义 | 示例(x=5) | 结果 | 优先级 |
---|---|---|---|---|
> | 大于 | x>8 | false | 7 |
< | 小于 | x<8 | true | 7 |
>= | 大于或等于 | x>=8 | false | 7 |
<= | 小于或等于 | x<=8 | true | 7 |
5、相等运算
符号 | 含义 | 示例(x=5) | 结果 | 优先级 |
---|---|---|---|---|
== | 等于 | x==8 | false | 8 |
=== | 全等(值和类型) | x===5 x==="5" | true false | 8 |
!= | 不等于 | x!=8 | true | 8 |
!== | 不全等(值和类型) | x!==3 x!=="5" | true true | 8 |
6、条件运算
符号 | 含义 | 优先级 |
---|---|---|
condition ? value1 : value2 | 条件为ture时赋值1,否则赋值2 | 14 |
condition ? expr1 : expr2 | 条件为ture时运行1,否则运行2 | 14 |
7、赋值运算
符号 | 含义 | 示例 | 等价于 | 优先级 |
---|---|---|---|---|
= | 赋值 | x=5 | x=5 | 15 |
+= | 赋值和 | x+=y | x=x+y | 15 |
-= | 赋值差 | x-=y | x=x-y | 15 |
*= | 赋值积 | x*=y | x=x*y | 15 |
/= | 赋值商 | x/=y | x=x/y | 15 |
%= | 赋值余(保留整数) | x%=y | x=x%y | 15 |
<<= | 赋值左移 | x<<=y | x=x<<y | 15 |
>>= | 赋值带符号右移 | x>>=y | x=x>>y | 15 |
>>>= | 赋值无符号右移 | x>>=y | x=x>>y | 15 |
&= | 赋值与 | x&=y | x=x&y | 15 |
|= | 赋值或 | x|=y | x=x|y | 15 |
^= | 赋值异或 | x^=y | x=x^y | 15 |
[]=[] | 解构赋值(给数组或对象中的元素赋值) | [a, b] = [1, 2] {a, b} = {a:1, b:2} | a=1 b=2 | 15 |