原文: http://pij.robinqu.me/JavaScript_Core/JavaScript_Basics/Expressions.html
表达式
表达式是JavaScript中的一个短语,诠释器会将其盘算出一个效果。顺序中的常量是最简朴的一类表达式。
将简朴的表达式在组合成庞杂的表达式最常常运用的要领就是运用运算符。运算符依据特定运算划定规矩对操纵数举行运算。
原始表达式
原始表达式包括常量,关键字和变量.
对象和数组的初始化表达式
数组初始化表达式是经由过程一对方括号和其内由逗号离隔的列表构成的。比方
[]
[1+2,3+4]
也能够举行嵌套:
[[1,2,3],[4,5,6]];
也能够经由过程逗号省略某些元素:
[1,,,,5]
对象初始化跟数组初始化异常类似,只是方括号被花括号替代,而且每一个字表达式都包括一个属性吗和一个冒号作为前缀:
var p = {x:2.3, y:-1.2}
函数定义表达式
var quare = function(x) { return x * x;}
属性接见表达式
o.x
挪用表达式
f(0)
Math.max(x, y, z)
a.sort()
对象建立表达式
new Object()
new Point(2,3)
运算符概述
JavaScript中有很多运算符用于算术表达式,比较表达式,逻辑表达式,赋值表达式。多半运算符都是由标点符号示意,比方”+”和”=”。别的一些运算符则是由关键字示意,比方delete和instanceof。
运算符能够依据其操纵数的个人举行分类。多半的运算符为二元运算符 比方*。 一样也有一些一元运算符,比方,表达式-x中“-”运算符,前提推断运算符 ?: 是一个三元运算符。
一些运算符能够作用与任何数据范例,然则依然愿望它们的操纵数是指定范例的数据,而且大多半运算符返回一个特定范例的值。通常会依据需要对操纵数举行范例转换
左值是一个陈旧的属于,它是指 表达式只能出现在赋值运算符的左边。在JavaScript中,变量,对象属性和数组元素均是左值。ECMAScript范例许可内置函数返回一个左值,但自定义的函数则不能返回左值。
算术表达式
1 + 2
"hello" + " "
"1" + "2"
关联表达式
关联运算符用于测试两个值之间的关联,关联表达式老是返回一个布尔值,通常在if, while或许for语句中运用关联表达式,用以控制顺序的实行流程。
== 和 ===运算符用于比较两个值是不是相称,他们对相称的定义不尽相同。两个运算符许可恣意范例的操纵数,假如操纵数相称则返回true,不然返回false。====也称为严厉相称运算符,它用来检测两个操纵数是不是严厉相称。== 运算符称做相称运算符,它用来检测两个操纵数是不是相称,这个相称的定义异常宽松,能够许可举行范例转换。由于 == ===的连系性都是从左到右,所以在实行==操纵的时刻,实行左边的范例转换。 != !==运算符的检测划定规矩是==和===运算符的求反。
比较运算符用来检测两个操纵数的大小关联。比方 < > <= >=. 比较操纵符的操纵数多是恣意范例的,但是以后数字和字符串才是真正实行比较操纵符,由于那些不是数字和字符串的操纵数都将举行范例转换。
in运算符愿望它的左操纵数是一个字符串或能够转换为字符串,愿望它的右操纵数是一个对象。假如右边的对象具有一个名为左操纵数值的属性名,那末表达式返回true,比方:
var point = {x:1, y:1};
"x" in point
instanceof运算符愿望左操纵数是一个对象,右操纵数标识对象的类。假如左边的对象是右边类的实例,则表达式返回true。比方:
var d = new Date();// 经由过程Date()组织函数来建立一个新对象
d instanceof Date;// 盘算构造为true, d是由Date()建立的
逻辑表达式
逻辑运算符 && || !是对操纵数举行布尔算术运算,常常和关联运算符一同运用
if(a === b && c == d ) {
// some code
}
赋值表达式
JavaScript运用”=”运算符来给变量或许属性赋值 比方:
i = 0
o.x = 1
=运算符愿望它的左操纵数是一个左值, 右操纵数能够使恣意范例的恣意值。
除了通例的赋值运算,JavaScript还支撑很多其他的赋值运算符,这些运算符将赋值运算符和其他运算符连接起来,供应了一种更加快速的运算体式格局。比方:
total += sales_tax
等价于
total = total + sales_tax
表达式盘算
和其他很多诠释性言语一样,JavaScript一样能够诠释运转由JavaScript源代码构成的字符串, 并发生一个值。JavaScript经由过程管局函数eval()来完成这个事情:
eval("3+2") //=>5
其他运算符
前提运算符(?:)是JavaScript中唯一的一个三元操纵符:
x > 0 ? x : -x //求x的绝对值
typeof运算符是一元运算符,放在其单个操纵数的前面,操纵数能够使恣意范例。返回值为示意操纵数范例的一个字符串:
typeof最常常运用的用法是写在表达式中, 就像如许:
(typeof value == "string") ? "'" + value + "'" : value
delete是一元操纵符, 它用来删除对象属性或许数组元素.
var o = {x:1, y:2}//定义一个对象
delete o.x //删除一个属性
"x" in o //=> false:这个属性在对象中不再存在