Js整理备忘(02)——运算符

1、运算符的表示以及优先级

Javascript(以下简写为Js)的大部分运算符与C或Java是类似的。

记得刚学C语言时老师讲的优先级口诀,非常好记:“括、单、算、移、关”“位、逻、条、赋、逗”,此处也可以套用一下,便于记忆。

(1)标点符号表示,比较普遍,略。

(2)用关键字表示,和一般的运算符一样,都是正则运算符,只是更具有可读性,此处详细列出几个。

delete:用于删除指定的对象的属性、数组元素或变量;结合性:R;运算数类型:lvalue

typeof:用于返回数据类型;结合性:R;运算数类型:任意

void:用于返回未定义的值;结合性:R;运算数类型:任意

以上三个属于一元运算符,也叫单目运算符(即口诀中的“单”),运算数只有一个

instenceof:用于检查对象类型;结合性:L;运算数类型:对象,构造函数

in:用于检查对象的某个属性是否存在;结合性:L;运算数类型:字符串(属性名),对象

以上两个属于关系运算符(即口诀中的“关”)

注意:

lvalue:上面提到运算符delete的运算数类型是lvalue,lvalue指的是能够合法出现在一个赋值表达式左边的表达式。Js中变量、对象的属性、数组的元素都是lvalue型的

结合性(associativity):一元运算符、赋值运算符、三元条件运算符结合性是R,从右到左进行运算。

 

2、部分运算符的使用说明

如果运算数非数字,则运算前都会先尝试将其自动转换为数字,这是算术运算过程中的通用特性。

(1)除法运算符(/)

Js中所有数字都是浮点型,这一点跟区分整数和浮点数的程序语言不同,如5/2结果是2.5,而不是2

除数为0的结果是正无穷大(Infinity)或者负无穷大(-Infinity),而0/0结果则是特殊值NaN

(2)模运算符(%)

取模运算通常都是整数,但Js中也适用于浮点数,如-4.3%2.1=-0.1

(3)=、==和===

为了区别,可将“=”读作“得到或赋予”;“==”读作“等于”;“===”读作“完全等同”。

==与===用于比较两个运算数是否相等

相同点:

Js中,数字、字符串、布尔值使用的都是值(value)比较,值相等则相等或等同。

比较对象、数组、函数时使用引用(reference),若两个变量引用同一个对象,则两变量才相等。也就是说两个数组无论如何也不会相等,即使他们存放的元素完全相同。

NaN不与任何一个值(包括NaN本身)相等或等同,检测一个值是否是NaN,可用全局函数isNaN()。

不同点:

===

==

类型不同,则不等同(!==)类型不同,仍然可能相等
   如一个是null,一个是undefined,则两者相等
   若两者转换后的值(value)相等,则返回true
   若一个是对象,另一个是数字或者字符串,则会先将对象转换为原始类型的值。Js核心语言内部通常先尝试valueof()转换,再尝试toString()转换;但是对于Date类,则先执行toString()转换。

(4)比较运算符

比较运算符只能在数字或字符串上执行,所以不是数字或字符串的运算数将会先转换成数字或字符串。

当字符串与数字比较时,先转换成数字,再执行数字比较。

(5)in 运算符

二元运算符,要求左边运算数是一个字符串,或可以转化为字符串,右边运算数是一个对象或数组。

如果左边字符串是右边对象的一个属性名,则返回true

(6)instenceof 运算符

二元运算符,要求左边运算数是一个对象,右边运算数是对象类的对象名。

如果左边的对象是右边对象名的一个实例,则返回true

(7)逻辑&&、||、!

常用于执行布尔代数,另外

“||” 也可以这么使用:var max=width||height||500;这一用法通常是选取一组备选值中第一个定义并且非空的值。

“!”对任何值x应用两次都可以将该值转换为一个布尔值。

(8)typeof 运算符

一元运算符,返回运算数的类型

若运算数是数字、字符串或布尔值,返回“number”、“string”或“boolean”

若运算数是对象、数组或null,返回“object”(运算数是Number、String或Boolean这样的包装对象时,也返回“object”)

若运算数是函数,返回“function”

若运算数是未定义的,返回“undefined”。

由此可见,typeof不能区别两种不同的对象类型,若要区别,须使用其他方法,如使用 instenceof 运算符或 constructor 属性(Object.constructor后面介绍)。

(9)delete 运算符

一元运算符,删除指定的对象的属性、数组元素或变量;删除成功则返回true,删除失败返回false。

一些例子:

<script type="text/javascript">n = 123;var p = { x: 1, y: 2 };document.write(delete n);   //truedocument.write(delete p.x); //true,删除对象p的属性xdocument.write(typeof p.x); //undefined,属性x已经被删除,不再存在document.write(delete p);   //false,var语句声明的变量不能被删除document.write(delete o);   //true, o不存在document.write(delete "a"); //true, ECMAScript标准规定,若delete的运算数不是属性、数组、或变量时,返回true
</script>

注意:delete影响的只是属性值,并不影响被这些属性引用的对象。

var o = new Object();
o.e1 = new Date();      //属性e1是对对象Date()的引用
o.e2 = o.e1;            //属性e2也是对Date()的引用
delete o.e1;            //只删除o的属性e1,对Date()对象没有任何影响。
document.write(o.e2);   //e2属性此时仍然引用Date()对象

 

(10)数组和对象的存取运算符——“[]”和“.”

“.”要求左边运算数是一个对象,右边运算数是一个标识符(即对象的属性名或方法的直接量名)。若该对象中没有指定的属性,则返回undefined

“[]”用于存取数组元素,也可用于存取对象的属性。

注意:当“[]”用于关联数组时,由于属性名动态生成,所以不能使用运算符“.”,只能使用“[]”。

例如在使用for/in遍历对象属性时,for(f in o){ document.write(o[f]);} ,不能使用o.f,此处f只是变量而不是o的标识符。

转载于:https://www.cnblogs.com/gppblog/archive/2010/01/11/1644123.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写一个合格的前端脚手架

为什么我们需要一套脚手架为什么我们需要一套脚手架&#xff0c;它能帮助我们解决哪些痛点问题。•前端项目配置越来越繁琐、耗时&#xff0c;重复无意义的工作•项目结构不统一、不规范•前端项目类型繁多&#xff0c;不同项目不同配置&#xff0c;管理成本高•脚手架也可以是…

第一篇cnblog!

本人才疏学浅&#xff0c;终于通过了cnblog的审核&#xff0c;兴奋之余&#xff0c;发表感言——不容易啊&#xff01;在我的博闻里面&#xff0c;随笔类当然就是技术类的比较多的&#xff0c;特别是实例类的。理论类的大部分放在文章板块&#xff0c;本人e文特别好(哈哈&#…

解决error 1045: Access denied for user: 'root@localhost' (Using password: YES)

转载连接&#xff1a;http://jianfw2009.blog.163.com/blog/static/13431366020111016112459158/ 1、先停止mysql服务2、在mysql的目录下找到my.ini&#xff0c;在[mysqld]后面加上skip-grant-tables3、启动mysql服务,打开Command Line Client以空密码登录4、退出mysql,并停止服…

fillcolor是什么意思_fill是什么意思

1. (使)装满;(使)注满;(使)充满If you fill a container or area, or if it fills, an amount of something enters it that is enough to make it full.e.g.Fill a saucepan with water and bring to a slow boil...往平底锅里加满水,小火煮沸。e.g.She made sandwiches, fill…

利用JMeter进行压力测试(1)(转)

转自&#xff1a;http://www.cnblogs.com/game-over/archive/2010/01/08/1642685.html压力测试以软件响应速度为测试目标&#xff0c;尤其是在较短时间内大量并发用户的同时访问时&#xff0c;软件的性能和抗压能力。 JMeter是一款开源的压力测试工具&#xff0c;目前最新Rele…

MyISAM InnoDB 区别

转载链接&#xff1a;http://www.php100.com/html/webkaifa/database/Mysql/2011/0326/7789.html MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型&#xff0c;这两个表类型各有优劣&#xff0c;视具体应用而定。基本的差别为&#xff1a;MyISAM…

Git 内部原理图解——对象、分支以及如何从零开始建仓库

我们中的许多人每天都在使用 git&#xff0c;但是有多少人知道它的内部是怎么运作的呢&#xff1f;例如我们使用 git commit 时发生了什么&#xff1f;提交&#xff08;commit&#xff09;与提交之间保存的是什么&#xff1f;两次提交之间难道只是文件的差异&#xff08;dif…

wpsmac和pc版的区别_Mac版WPS Office和微软Office 2019哪个更好?

众所周知&#xff0c; macOS系统生态下&#xff0c;有许多界面精美、功能强大、体验出色的软件&#xff0c;但提到办公套件&#xff0c;人们首先想到的还是微软 Office 套件&#xff0c;其中的Word、 Excel 以及PPT&#xff0c;但用户体验并不如意。但现在&#xff0c;苹果用户…

A tutorial video for MindManager for free

MindManager 2016 for Windows Essential Training 本人学习的时候使用的是MindManager 2018版本的&#xff0c;和2016版本差异不大。 转载于:https://www.cnblogs.com/kelamoyujuzhen/p/10253278.html

Google, 请不要离开我们!

虽然我是.net阵营, 力挺Silverlight, 但是我真心希望谷歌留在中国, 如果她能够靠谈判求的言论自由的权利, 那将对中国的拥有自由信仰的一族产生重大的影响. 谷歌离开了中国, 不是她想抛弃中国市场, 而是中国决策者背叛了人性. 在此留下 Google 2010年1月14日的logo, 智慧的幽默…

高级php面试题及部分答案

转载链接&#xff1a;http://www.2cto.com/kf/201304/201112.html 一. 基本知识点 1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。 200 : 请求成功&#xff0c;请求的数据随之返回。 301 : 永久性重定向。 302 : 暂时行重定向。 401 : 当前请求需要用…

iec104点号_IEC104报文流程(有常用类型标识解释)

参数地址围类别97版基地址2002版基地址遥信1H------400H1H------4000H遥测701H------900H4001H------5000H遥控B01------B806001H------6100H设点B81H------C00H6201H------6400H电度C01H------C80H6401H------6600H遥测和遥信个数不设置上限&#xff0c;可以没有上限限制&…

本周ASP.NET英文技术文章推荐[04/08 - 04/14](附赠自弹超级玛丽主题曲)

摘要 本期共有6篇文章&#xff1a; ASP.NET编译问题的公开Hotfix补丁 期待下个版本AjaxPro 的发布 在ASP.NET 2.0中使用MultiView控件实现多页面表单 数据绑定的技巧&#xff1a;嵌套Eval语句 在ASP.NET 2.0中访问并更新数据&#xff1a;使用数据源控件以编程方式访问数据 AD…

一个离开某门户网站人员自爆黑幕

去年&#xff0c;我已在星星发表了一个关于免费发短信的各类软件的黑幕所在。而事实上的SMS&#xff08;即短信&#xff09;的黑幕远不止于此&#xff0c;今天&#xff0c;我终于有空坐下来&#xff0c;把其中的一些让你感觉平常却实际触目惊心的事情告诉你们&#xff0c;让你们…

28岁自学3年前端成功转行的励志故事

为什么转行因为混得不好。在成为程序员之前&#xff0c;我干过很多工作。由于学历的问题&#xff08;高中&#xff09;&#xff0c;我的工作基本上都是体力活。包括但不限于&#xff1a;工厂普工、销售&#xff08;没有干销售的才能&#xff09;、搬运工、摆地摊等&#xff0c;…

css中!important的作用

转载链接&#xff1a;http://www.cnblogs.com/guoguo-15/archive/2011/08/24/2151859.html css中!important的作用 {*rule !important}这个css规则当今在网页制作的时候的普及已经非常流行了&#xff0c;以前我对它的理解就停留在‘浏览器是否识别阶段’ 而没有真正去研究过&am…

word2vec应用场景_word2vec的使用参数解释和应用场景

" > corpus.txt因为这些数据虽然去除了其他标签的数据&#xff0c;但是却把保留下来了&#xff0c;所以后来作者在分词程序中去除了这个标签我在这个[网页](http://www.jb51.net/article/65497.htm)上找到了一个python去标签的简单代码。但是没有实验过&#xff0c;不知…

usb 驱动

usb 驱动学习总结&#xff1a; usb 采用分层的拓扑结构&#xff0c;金字塔型&#xff0c;最多是7层。usb 是主从结构&#xff0c;主和主或者从和从之间不能交换数据。理论上一个usb主控制器最多可接127个设备&#xff0c;协议规定每个usb设备具有一个7bit的地址&#xff0c;范围…

让Spring架构减化事务配置(转)

让Spring架构减化事务配置(转) 注&#xff1a;原文章曾发表在it168Spring颠覆了以前的编程模式&#xff0c;引入了IOC等全新的概念&#xff0c;广受大家的喜爱。目前大多数j2ee项目都已经采用Spring框架。Spring最大的问题是太多的配置文件&#xff0c;使得你不仅需要维护程序代…

面试字节跳动后的2点总结,建议收藏!

首先我来辟个谣&#xff1a;随便打开一个招聘网站&#xff0c;你会发现前端工程师的岗位需求依旧庞大&#xff0c;大厂人才奇缺&#xff0c;就业薪资起点高&#xff0c;无行业限制。&#xff08;数据来源&#xff1a;职友集&#xff09;前端开发的行业大环境行业升级&#xff0…