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