运算符和被运算的对象(操作符)构成表达式,表达式能产生一个具体的值。
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
javascript中判断数据类型的四种方法及typeof、instanceof、constructor、toString
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。