JavaScript运算符

JavaScript中五种常见运算符

一. in运算符

  in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象。如果右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回true。例如:


1

2

3

4

5

6

7

8

9

var point = {x:1, y:1};

‘x‘ in point    //=>true:对象有一个名为‘x‘的属性

‘z‘ in point    //=>false:对象中不存在名为‘z‘的属性

‘toString‘ in point    //=>true:对象集成了toString()方法

var data = [7, 8, 9];

‘0‘ in data    //=>true:数组包含元素‘0‘

1 in data      //=>true:数字转换为字符串

3 in data      //=>false:没有索引为3的元素

  注意:①当通过in判断一个字符串是否是一个对象的属性名时,这个判断也会包含对该对象集成属性的检测;

二. instanceof运算符  

  instanceof运算符希望左操作数是一个对象,右操作数标识对象的类。如果左侧对象是右侧类的实例,则表达式返回true,否则返回false。因为JavaScript中对象的类是通过初始化它们的构造函数来定义的,所以instanceof的右操作数应当是一个函数。例如:

var d = new Date();    //通过Date()构造函数来创建一个新对象
d instanceof Date;    //=>true:d是由Date()创建的
d instanceof Object;    //=>true:所有对象都是Object的实例
d instanceof Number;    //=>false:计算结果为false,d不是一个Number对象

var a = [1, 2, 3];
a instanceof Array;    //=>true:a是一个数组
a instanceof Object;    //=>true:所有数组都是对象
a instanceof RegExp;    //=>false:数组不是正则表达式

var b = 3;
b instanceof Number;    //=>false:右操作数不是一个对象,只是一个原始值(切记这里不做类型转换:当右操作数是合法的函数时,只要右操作数是任何原始类型都会返回false)

  注意:①所有对象都是Object的实例;②通过instanceof判断一个对象是否是一个类的实例的时候,这个判断也会包含对“父类”的检测;③如果instanceof的左操作数不是对象的话,instanceof返回false,如果右操作数不是函数,则抛出一个类型错误异常(先检测右操作数是否合法,再检测左操作数,最后判断表达式)。

三. typeof运算符

  typeof是一元运算符,放在其单个操作数的前面,操作数可以是任意类型。返回值为表示操作数类型的一个字符串。下面是任意值在typeof运算后的返回值: 

x typeof x
undefined "undefined"
null "object"
true或false "boolean"
任意数字或NaN "number"
任意字符串 "string"
任意函数 "function"
任意内置对象(非函数) "object"
任意宿主对象 有编译器各自实现的字符串,但不是"undefined"、"boolean"、"number"或"string"

  typeof运算符可以带上圆括号,这让typeof看起来像一个函数名,而不是一个运算符:typeof(i)

四. delete运算符

  delete是一元操作符,它用来删除对象属性或者数组元素,当然它也有返回值。例如:

var o = {x:1, y:2};
delete o.x;      //=>true:成功删除一个属性
‘x‘ in o;    //=>false:这个属性在对象中不再存在了
‘y‘ in o;    //=>true
o.x;    //=>undefined:读取不存在的属性将返回undefined
delete o.x;    //=>true:删除不存在的属性,返回true
delete o.z;    //=>true:删除不存在的属性,返回true

var a = [1, 2, 3];
2 in a;    //=>true:元素2在数组中
delete a[2];    //=>true:成功删除一个数组元素
2 in a;    //=>false:元素2已经不在数组中了
a.length;    //=>3:注意,数组长度并没有改变
delete a[3];    //=>true:删除不存在的元素,返回true
a[2];    //=>undefined:读取不存在的元素将返回undefined

var b = [1, 2, undefined];
2 in b;    //=>true:元素2在数组b中
b[2];    //=>undefined:读取元素2的值,返回其值undefined
delete b[2];    //=>true:成功删除一个数组元素
2 in b;    //=>false:元素2已经不再数组中了
b.length;    //=>3:数组长度未变
b[2];    //=>undefined:读取不存在的元素返回undefined

可以看到:delete如果删除成功或者删除不存在的属性或元素时都会返回true,那么什么时候返回false呢?其实,并不是所有属性都可删除,一些内置核心和客户端属性是不能删除,用户通过var语句声明的变量不能删除(当用var声明全局变量时,这个变量也是全局对象window的一个属性),同样,通过function语句定义的函数和函数参数也不能删除。例如:

var o = {x:1, y:2};
var aa = 22;
delete o.x;    //=>true
typeof o.x;    //=>undefined
delete o;    //=>false:不能删除通过var声明的变量,返回false
delete aa;    //=>false:不能删除通过var声明的变量,返回false
delete window.aa;    //=>false:无法删除
delete this.aa;    //=>false:无法删除

还有一点:delete希望它的操作数是一个左值,如果它不是左值,那么delete将不进行任何操作同时返回true。例如:

delete 1;    //数字1不是一个左值,返回true

五. void运算符

  void是一元运算符,它出现在操作数之前,操作数可以是任意类型,操作数会照常计算,但永远返回undefined。例如:

var aa = 33;
var bb = 44;
var cc = 0;
var dd = void(aa+bb);    //dd=undefined
var ee = void(cc = aa+bb);    //ee=undefined,cc=77
//注意:最后一句不能写成var ee = void(cc = aa + bb;);,因为void一元运算符,后面是操作数,不能是完整的语句    

JavaScript中五种常见运算符

摘要: 一. in运算符 in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象。如果右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回true。例如:var point = {x:1, y:1};‘x‘ in point //=>true:对象有一个名为‘x‘的...阅读全文

posted @ 2015-08-20 14:36Craftsman_Gao 阅读(298) |评论 (2)编辑

JavaScript之函数作用域

摘要: 有过类似C语言编程经验的同学应该都知道“块级作用域(block scope)”:花括号内的每一段代码都具有各自的作用域,而且在声明它们的代码段之外是不可见的。而在JavaScript中是没有块级作用域的,JavaScript取而代之地使用了“函数作用域(function scope)”:变量在声...阅读全文

posted @ 2015-08-11 12:22Craftsman_Gao 阅读(363) |评论 (11)编辑

JavaScript中数字与字符串相互转化

摘要: 一.数字转换成字符串①Number类定义的toString()方法:这个方法可以接收表示转换基数(radix,范围在2~36之间)的可选参数,如果不指定此参数,转换规则将是基于十进制。例如:②Number类定义的toFixed()方法:这个方法可以指定小数点后的位数。例如:③Number类定义的to...阅读全文

posted @ 2015-07-11 15:14Craftsman_Gao 阅读(197) |评论 (0)编辑

JavaScript之包装对象

摘要: JavaScript包装对象阅读全文

posted @ 2015-07-08 22:10Craftsman_Gao 阅读(228) |评论 (0)编辑

JavaScript阻止事件冒泡(兼容IE、Chrome、FF)

摘要: 这里仅仅是一个简单代码demo,因为时间问题并未做深入研究,因为今天做项目时要用到阻止事件冒泡的内容,找了好多才找到一个可以使用的,特记录之。 阻止事件冒泡 abad阅读全文

posted @ 2015-06-24 15:16Craftsman_Gao 阅读(14) |评论 (0)编辑

JavaScript中null和undefined的总结

摘要: JavaScript基础之null、undefined阅读全文

posted @ 2015-05-28 23:21Craftsman_Gao 阅读(24) |评论 (0)编辑

JavaScript的类型、值和变量的总结

摘要: JavaScript基础之类型变量阅读全文

posted @ 2015-05-28 22:45Craftsman_Gao 阅读(16) |评论 (0)编辑

JavaScript语言核心之词法结构

摘要: 《JavaScript权威指南》读书笔记阅读全文

posted @ 2015-05-10 11:15Craftsman_Gao 阅读(109) |

时间: 08-19

JavaScript运算符的相关文章

JavaScript之基础-4 JavaScript 运算符、表达式

一.JavaScript 运算符 运算符 - 算数运算        + - * / % ++ -- - 关系运算        > < >= <= == === != !== - 逻辑运算        && || ! - 位运算          & | ~ ^ << >> >>> - 赋值运算        = += -= *= /= %= - 字符连接运算    + - 条件(三目)运算  ?: - 特殊运算

JavaScript运算符与表达式

JavaScript表达式 表达式是用于JavaScript脚本运行时进行计算的式子,可以包含常量.变量和运算符 JavaScript运算符 1.算术运算符:+.-.*./.%.++.--:注意(只要+连接的操作数中有一个是字符串型,Js就会自动把非字符串型数据作为字符串型数据来处理:Js代码的执行顺序是从左到右,所以在+连接的表达式中,遇到字符串型数据之前,所有出现的数值型数据(或者可以自动转换为数值型的数据)仍被作为数值来处理.为了避免这种情况,我们可以在表达式前拼一个空字符串). 2.字符

关于javascript运算符汇总

javascript运算符有:算术运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符.位运算符.还有其它运算符等等. 算术运算符包括:+(加).-(减).*(乘)./(除).%(余).++(累加).--(递减) 赋值运算符包括:=.+=.-=.*=./=.%= 比较运算符包括:=(等于).==(全等于).!=(不等于).>(大于).<(小于).>=(大于或等于).<=(小于等于) 逻辑运算符包括:&&(and).||(or).!(not) 条件运算符包括:用?表

第四章 javaScript运算符

目录: 一.自增.自减运算符 二.布尔操作符(!.&&.||) 三.乘性操作符(乘法.除法.取模) 四.加法 五.关系操作符 一.自增.自减运算符: ++/--在前,则先运算再后续工作.在后则先后续工作再运算.比如: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta content="text/html; charset=utf-8" http-equiv=&q

javascript运算符的优先级

最基木的运算符优先级就是所谓的“先乘除,后加减”.对于优先顺序处于同一层次上的运算符,按照从左到右出现的顺序计算.下面给出javascript定义的所有运算符的优先级.运算符 优先顺序1.   成员选择.括号.函数调用.数组下标 2.   !.-(单目减).++.--.typeof, new, void, delete 3.   *./.%    4.   +.- 5.   <<.>>.>>> 6.   <.<=.<.>= 7.   ==.

JavaScript运算符:递增递减运算符前置和后置的区别

从两段代码说起 var num1 = 2; var num2 = 20; var num3 = --num1 + num2; var num4 = num1 + num2; console.log(num1 +'-' + num2 +'-'+ num3 +'-' + num4) 将四个数分别打印是多少? var num1 = 2; var num2 = 20; var num3 = num1-- + num2; var num4 = num1 + num2; console.log(num1 +

javascript 运算符,流程控制,四种变量,函数一级页面交互

每一种语言中都有自己的运算符,表现方式都有一些区别. javascript运算符如下: - 赋值运算符 前提:x=5,y=5 | 运算符 | 例子 | 等同于 | 运算结果 | | :----- | :--- | ------ | -------- | | = | x=y | | 5 | | += | x+=y | x=x+y | 10 | | -= | x-=y | x=x-y | 0 | | *= | x*=y | x=x*y | 25 | | /= | x/=y | x=x/y | 1 |

第5章—JavaScript运算符

5.1运算符类型:①算术运算符②赋值运算符③比较运算符④逻辑运算符⑤位运算符⑥特殊运算符 5.2算术运算符:+,-,*,/,%,++,--,+(一元加),-(一元减) 5.2.1(+):①强制类型转换(低精度向高精度)②数字+数字+字符串(先相加后连接)③字符串+字符串=字符串④如果一个操作数是特殊值NaN(非数字),另一个是数字,则结果为NaN 5.2.2(-):①如果其中一个操作数是NaN,结果将是NaN②如果其中一个操作数为非数字类型(如字符串.布尔等等),那么JavaScript将尝试把

第一百节,JavaScript运算符

JavaScript表达式中的运算符 学习要点: 1.什么是表达式 2.一元运算符 3.算术运算符 4.关系运算符 5.逻辑运算符 6.*位运算符 7.赋值运算符 8.其他运算符 9.运算符优先级 ECMA-262描述了一组用于操作数据值的运算符,包括一元运算符.布尔运算符.算术运算符.关系运算符.三元运算符.位运算符及赋值运算符.ECMAScript中的运算符适用于很多值,包括字符串.数值.布尔值.对象等.不过,通过上一章我们也了解到,应用于对象时通常会调用对象的valueOf()和toStr