JavaScript基本概念(操作符)
一元操作符
一元操作符在处理所有的非数值时,相当于将该值经过Number()转换成数值,如 +"12" 将把 "12" 字符串转换为数字。
位操作符
- 负数在计算机上以二进制补码的形式储存,补码等于原码的反码加1,ECMAScript在以二进制字符串形式输出一个负数时,我们看到的只是这个负数绝对值的二进制码前面加上一个符号(而不是输出32位二进制)如:
var num = -18;
alert(num.toString(2)); // "-10010" - 对特殊的NaN和Infinity值应用位操作符时,这两个值都会被当成0来处理。
- 进行有符号的右移(>>)操作时,其左边以符号位的值来填充空位,进行无符号的右移(>>>)操作时,以0来填充空位.
- 负数在计算机上以二进制补码的形式储存,补码等于原码的反码加1,ECMAScript在以二进制字符串形式输出一个负数时,我们看到的只是这个负数绝对值的二进制码前面加上一个符号(而不是输出32位二进制)如:
布尔操作符
逻辑非
对非布尔类型的值进行逻辑非操作时,会先使用Boolean()将值转换为布尔类型。
逻辑与
- 属于短路操作,且并不一定返回布尔类型。
- 如果第一个操作数用Boolean()函数可以转换为true时,返回第二个操作数。
- 如果第一个操作数是false,null,NaN,undefined时,返回第一个操作数。
逻辑或
- 原理跟逻辑与差不多。
- 我们可以利用下面的例子来避免为变量赋null或undefined值,如:
var myObject = preferredObject || backupObject
其中若第一个变量存在则优先赋予myObject第一个变量,不然赋予第二个变量
乘性操作符
注:如果参与乘性计算的某个操作符不是数值时,后台会先使用Number()转型函数将其转换为数值。
乘法
- 如果有一个操作数是NaN,则结果是NaN;
- 如果是Infinity与0相乘,则结果是NaN;
- 如果Infinity与非0数值相乘,则结果是Infinity或-Infinity;
- 如果是Infinity与Infinity相乘,则结果是Infinity。
除法
- 如果有一个操作数是NaN,则结果是NaN;
- 如果是Infinity被Infinity除,则结果是NaN;
- 如果是零被零除,则结果是NaN;
- 如果是非零的有限数被零除,则结果是Infinity或-Infinity;
- 如果是Infinity被任何非零数值除,则结果是Infinity或-Infinity。
求模
- 如果被除数是无穷大值而除数是有限大值,则结果是NaN;
- 如果被除数是有限大的数值而除数是零,则结果是NaN;
- 如果是Infinity被Infinity除,则结果是NaN;
- 如果被除数是有限大的数值而除数是无穷大的数值,则结果是被除数;
- 如果被除数是0,则结果是0。
加性操作符
加法
如果有一个操作数是字符串,则将另一个操作数使用String()转型函数转换为字符串,然后将两个字符串拼接起来;
减法
如果操作数是非数值,后台调用Number()转型函数先将其转换为数值在进行运算。
关系操作符
- 如果两个操作数是数值,则执行数值比较;
- 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值;
- 如果一个操作数是数值,则后台将使用Number()函数将其转换为数值再比较;
- 如果一个操作数是对象,则调用对象的valueOf()方法,用得到的结果按照前面的规则进行比较,如果对象没有valueOf方法,则调用toString()方法,并用得到的结果进行比较。
- NaN作为操作数时,NaN < 3 和 NaN >= 3 皆返回false。
相等操作符
注:相等和不相等---先转换再比较,全等和不全等---仅比较而不转换
相等和不相等
- null和undefined是相等的;
- 如果只有一个操作数是数值,则将另一个操作数转换为数值再比较(偏向于比较数字);
- 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true。
条件操作符
如下所示:error这个变量未定义,但是并未抛出错误。
abc == true ? 12 : error
in运算符
in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望他的右操作数是一个对象,如果右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回true。
instanceof运算符
instanceof运算符希望左操作数是一个对象,右操作数标识对象的类。如果左侧的对象是右侧类的实例,则表达式返回true。所有的对象都是Object的实例。如果instanceof的左操作数不是对象的话,instanceof返回false,如果右操作数不是函数,则抛出一个类型错误异常。
JavaScript基本概念(操作符)的更多相关文章
- JavaScript基本概念(二)
JavaScript 基本概念(二) 操作符和语句 目录 操作符 一元操作符 位操作符 布尔操作符 乘性操作符 其他操作符 语句部分 说起操作符,回忆下上一篇文章末尾说的话. 操作符 一元操作符 ++ ...
- 《JavaScript核心概念》基础部分重点摘录
注:<JavaScript核心概念>适合深入了解JavaScript,比我买的<JavaScript框架设计>语言和内容丰富多了(可能是我水平尚浅吧). 1. 作用域 var ...
- JavaScript中“&&”和“||”操作符的意义,深入理解和使用场景
一.概念 与其他语言不同,在js中,逻辑运算符可以返回任何类型的数据,不仅仅是true和false. &&和||的返回值是两个操作数的其中一个.即a&&b或者a||b ...
- javascript中的操作符详解1
好久没有写点什么了,根据博主的技术,仍然写一点javascript新手入门文章,接下来我们一起来探讨javascript的操作符. 一.前言 javascript中有许多操作符,但是许多初学者并不理解 ...
- 全面解析JavaScript中“&&”和“||”操作符(总结篇)
1.||(逻辑或), 从字面上来说,只有前后都是false的时候才返回false,否则返回true. ? 1 2 3 4 alert(true||false); // true alert(false ...
- JavaScript的概念,引入,基本数据类型
08.05自我总结 JavaScript 一.概念 JavaScript(下文我们会用简称JS来代替)是脚本编程语言,JS语言开发的文件是以.js为后缀,通过在html文件中引入该js文件来控制htm ...
- JavaScript高级程序设计(八):基本概念--操作符
操作符包括:算术操作符.位操作符.关系操作符和相等操作符. 一元操作符 1.只能操作一个值得操作符,即递增和递减操作符: 2.递增(++)和递减(--)操作符包括:前置型和后置型.前置型位于要操作的变 ...
- Javascript学习笔记-基本概念-操作符
1.一元操作符 (1)递增和递减操作符 只能操作一个值的操作符叫一元操作符. var age = 29; ++age; var age = 29; --age; var age = 29; var a ...
- js-js实现,在HTML中使用JavaScript,基本概念
Js实现: 1.JavaScript实现的组成: 核心(ECMAScript):由ECMA-262定义,提供核心语言功能 文档对象模型(DOM)提供访问和操作网页内容的方法以及接口 浏览器对象模型(B ...
随机推荐
- Qt 小技巧之“To-Do 事项”
Qt Creator 2.5 版本的时候增加了这个插件 一直没怎么用到 现在想起来 google了一下 做个总结吧 先晒图 就是这样啦 用法也很简单 在项目的随便一个位置 写一个注释 只要以上面5个关 ...
- html 调用 activeX(c++)
1.新建MFC ActiveX 2.添加方法 3.找到add函数编写代码 4.在test.idl中找到最后一个uuid 5.编译工程,会自动注册控件 6.html中的代码 <html> & ...
- 用jquery制作加载条
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别
java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制.否则可能导致应用程序宕掉. 举例说明含义:-Xms128m 表示JVM Heap(堆内存)最小尺寸128MB, ...
- Fiddler 域名过滤
原来一直没意识到Fiddler过滤,导致每次抓包都要自己判断.搜索好多东西,真是呵呵! 过滤设置很简单,看懂一张图就解决问题了. 箭头 那两处设置下,圆圈处保存再进行抓包即可
- Windows Message Queue--hdu1509
Windows Message Queue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- 图片异步加载 ,KVO
图片异步下载类目: .h #import <UIKit/UIKit.h> typedef void (^ImageBlock)(UIImage *img); @interface UIIm ...
- UVA 12657 Boxes in a Line
双向链表 注意:如果算法是最后处理翻转情况时,注意指令4翻转后1,2两个指令也要翻转处理: 指令3 中交换盒子要注意两个盒子相邻的情况 #include <iostream> #inclu ...
- WPF中实现先登录后启动主程序的方法
原文:WPF中实现先登录后启动主程序的方法 我觉得先登录后启动应用主程序是一个很经典的问题,基本上如果要写一个应用程序都会用到这个的小环节.我在这个问题上挣扎了大半天才找到解决方案,我的实现方法我觉得 ...
- Java魔法堂:打包知识点之META-INF/MAINFEST.MF(转)
一.前言 通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF,那是为 ...