NEWS

新闻资讯

JavaScript运算符和表达式

运算符和被运算的对象(操作符)构成表达式,表达式能产生一个具体的值。

表达式:是javascript中的一个短语。解释器会将它计算出一个结果。程序中的常量是最简单的一类表达式。变量名也是一种简单的表达式。

运算符:原始表达式是表达式的最小单位,包括常量或直接量、关键字和变量。

JavaScript的运算符包括:算术运算符、赋值运算符、字符串运算符、比较运算符、逻辑运算符、类型运算符、按位运算符。

一、算术运算符

算术运算符用于对数字执行算术运算。

运算符 描述 例子
+ var x = 100 + 50;var x = a + b;var x = (100 + 50) * a;
- var x = 5;var y = 2;var z = x - y;
* var z = x * y;
** 幂(ES6新增) var x = 5;var z = x ** 2; 等价于Math.pow(x,2)
/ var z = x / y;
% 求余数,5%3的值为2
++ 累加 var x = 5;x++;var z = x;
-- 累减 var x=5;--x;var z=x;

算术运算符的优先级和传统的数学一样。

二、赋值运算符

赋值运算符为JavaScript变量赋值。

运算符 例子 等价于
= x = y x = y
+= x+=y x=x+y
-= x-=y x=x-y
*= x*=y x=x*y
**= x**=y x=x**y  (还是ES7的预案,不稳定)
/= x/=y x=x/y
%= x%=y x=x%y

三、字符串运算符

“+”、"+="可以用来添加(连接)字符串。

var txt1 = "John";
var txt2 = "Doe";
var txt3 = txt1 + " " + txt2;
var txt1 = "What a very ";
txt1 += "nice day";

添加两个数字将返回总和,但添加数字和字符串将返回一个字符串。

var x = 5 + 5;
var y = "5" + 5;
var z = "Hello" + 5;

四、比较运算符

在逻辑语句中使用比较运算符来确定变量或值之间的相等或差异。得到的都是逻辑值。

运算符 描述 例子
== 判断是否相等 5==5 true
=== 值和数据类型是否相等 5==="5" false
!= 不相等 5!=8 true
!== 值和类型不相等 5!=="5" true
> 大于 5>8 false
>= 大于等于 5>=5 true
< 小于 5<3 false
<= 小于等于 5<=5 true
? 三元运算符, 它根据某些条件为变量赋值 variablename  = ( condition ) ?  value1 : value2   var  voteable = (age <  18 ) ?  "Too young" : "Old enough" ;

比较两个不同类型的数据可能会产生意外的结果。

当数字和字符串比较时,JavaScript会隐式的把字符串先转换成数字再进行比较。

空字符串转换成0,非数字字符串会转换成NaN,并且总是false。

2 > "3" => false
2 > "" => true
2 > "a" => false

当两个字符串进行比较的时候,按照字符顺序判断,比较各字符的ASCII大小。

"2" > "12" => true
"a" < "c" => true

a-z   97-122

A-Z  65-90 

0-9  45-57

//将字母转成ASCII码
var str = "A";
str.charCodeAt();  // 65
var str1 = 'a';
str1.charCodeAt();  // 97
    
//将ASCII码转成数字
var num = 97;
String.fromCharCode(num);  // 'a'
var num1 = 100;
String.fromCharCode(num1);  // 'd'

为了确保正确的结果,应在比较之前将变量转换为正确的类型。

age = Number(age);
if (isNaN(age)) {
    voteable = "输入的不是一个数字";
} else {
    voteable = (age < 18) ? "Too young" : "Old enough";
}

五、逻辑运算符

逻辑运算符用于确定变量或值之间的逻辑。一般由能得到逻辑值的比较运算符构成表达式。

运算符 描述 例子
&& 和 (and) 6<10&&5>3 => true
|| 或(or) 6<10 || 5<3 =>true
! 非(not) !5>3 => false

六、类型运算符

运算符 描述 例子
typeof 返回数据的类型 typeof(3) =>Number
instanceof 如果对象是对象类型的实例,则返回真
typeof "John"           // Returns "string" 
typeof 3.14            // Returns "number"
typeof NaN            // Returns "number"
typeof false            // Returns "boolean"
typeof [1,2,3,4]          // Returns "object"
typeof {name:'John', age:34}  // Returns "object"
typeof new Date()         // Returns "object"
typeof function () {}       // Returns "function"
typeof myCar            // Returns "undefined" 
typeof null            // Returns "object"

typeof能够返回的数据类型有:number/string/boolean/undefined/function/object。

在JavaScript中,有五种数据类型可以包含值:

  • string

  • number

  • boolean

  • object

  • function

有两种数据类型不包含值:

  • null

  • undefined

其中,object对象包含6种对象:

  • Object

  • Date

  • Array

  • String

  • Number

  • Boolean

但是,typeof不能返回Date、Array这种object类型。

因为就需要instanceof,instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。

语法:object instanceof constructor

需要特别注意的是:instanceof 检测的是原型。

object:要检测的对象。

constructor:某个构造函数。

instanceof:运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

a instanceof b?alert("true"):alert("false");   //a是b的实例?真:假

var a=new Array();
console.log(a instanceof Array); // true,同时 console.log(a instanceof Object) 
//也会返回 true;这是因为 Array 是 object 的子类。
    
    
function test(){};
var a=new test();
console.log(a instanceof test) 会返回true
    
var a=3;
console.log(a instanceof Number) //false
    
var a=new Number(3);
console.log(a instanceof Number) // true