js中的操作符
写在前面
js语法
DOM对象(把body,div,p等节点树看成一个对象)
BOM对象(把浏览器的地址栏历史记录DOM等装在一个对象)
浏览器是宿主,但js的宿主不限于浏览器,也可以是服务器,如node.js。
运算符:
//js中拼接运算符
console.log(2+3);
console.log('hello'+''+'world');
console.log(2+3+4+'haha'+5+6);//9haha56,一旦碰到非法数字后,后面的一律理解为“拼接”
例如
var num1=5;
var num2=10;
var message="The sum of 5 and 10 is"+num1+num2;
alert(message);//因为每个+都是独立的,第一个将字符串与数值5拼接,第二个又与10拼接,因此结果The sum of 5 and 10 is 510
var message="The sum of 5 and 10 is"+(num1+num2);
alert(message);//此时The sum of 5 and 10 is 15
//js中逻辑运算
都遵循的规则
逻辑与操作符&&
1如果第一个操作符是对象,则返回第二个操作数;
2如果第二个操作数是对象,则只有在第一个操作数求值结果为true的情况下才能返回该对象;
3如果两个操作数都是对象,则返回第二个操作数;
4_&&null -null
5_&&NaN -NaN
6_&&undefined -undefined
属于短路操作,即如果第一个操作数能够决定结果,那么就不会对第二个操作数求值
var found=true;
var result=(found&&s);//这里会发生错误
alert(result);//这里不会执行
var found=false;
var result=(found&&s);//不会发生错误
alert(result);//会执行(“false”)
因此逻辑与操作中不能用未定义的值(s未定义),使用之后就会发生错误。
逻辑或操作符||
1如果第一个操作符是对象,则返回第一个操作数;
2如果第一个操作数求值结果为false,则返回第二个操作数
3如果两个操作数都是对象,则返回第一个操作数;
4null||null -null
5NaN||NaN -NaN
6undefined||undefined -undefined
返回的是最早能判断表达式结果的那个值
var a=false;
var b=6;
var c=true;
var d=(a||b||c);
console.log(d);//6
在源码中经常用window.hello=window.hello||window.world;哪一个为真就把哪一个值赋给window.hello
js中的操作符的更多相关文章
- 想不到的:js中加号操作符
研究js加号操作符的时候,无意中试验了一个 console.log({} + "str");//NaN 发现结果居然是NaN,这让我百思不得其解. 我查阅资料,js高级编程里是这样 ...
- JS 中 new 操作符
按照javascript语言精粹中所说,如果在一个函数前面带上new来调用该函数,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将被绑定到那个新对象上.这个话很抽象,我想 ...
- JS中==与===操作符的比较
摘要: ===操作符: 要是两个值类型不同,返回false 要是两个值都是number类型,并且数值相同,返回true 要是两个值都是stirng,并且两个值的String内容相同,返回true 要是 ...
- JS中new操作符源码实现
首先我们来看一下实例化一个对象做了浏览器做了什么事情 new的四步操作: 1. 创建一个空对象 2. 设置空对象的__proto__属性继承构造函数的prototype属性,也就是继承构造函数的原型对 ...
- Javascript高级编程学习笔记(4)—— JS中的数据类型(2)
接着昨天的文章,今天这篇文章主要讲述JS中剩余的两种数据类型String,和Object String类型 对于该类型,书中给出的解释为:由0或多个16为Unicode字符组成的字符序列. 对于JS中 ...
- 【js实例】js中的5种基本数据类型和9种操作符
js中的5中基本数据类型 js标识符 第一个字符必须为字母,下划线,或美元符 其他字符可以是字母,下划线,美元符,数字 js标识符区分大小写 标识符不能使关键字和保留字 关键字: break do i ...
- JS中的一元操作符
表达式 一元操作符 优先级 结合性 运算顺序 表达式是什么? 就是JS 中的一个短语,解释器遇到这个短语以后会把对它进行计算,得到一个结果参与运算,我们把这种要参与到运算中的各种各样的短语称为表达式. ...
- JS中的new操作符
在JS中定义一个构造函数,然后用new操作符构造对象obj,JS代码如下. function Base(){ this.name = "swf"; this.age =20; } ...
- js中的new操作符与Object.create()的作用与区别
js中的new操作符与Object.create()的作用与区别 https://blog.csdn.net/mht1829/article/details/76785231 2017年08月06日 ...
随机推荐
- RK30SDK系统重启源码分析
Linux系统重启的最底层函数是arch_reset,这是一个全局的函数指针变量,定义在 arch/arm/mach-rk30/include/mach/system.h中: extern void ...
- ie-9 以下ajax无法跨域的问题。只要add:jQuery.support.cors=true;即可
if (!jQuery.support.cors && window.XDomainRequest) { var httpRegEx = /^https?:\/\//i; var ge ...
- DataGridView绑定数据源的几种方式
使用DataGridView控件,可以显示和编辑来自多种不同类型的数据源的表格数据. 将数据绑定到DataGridView控件非常简单和直观,在大多数情况下,只需设置DataSource属性即可.在绑 ...
- 2018.7.7 MBA -从专业到管理(1)——技术人才与的管理人才比较
目录 1从基层员工到基层管理 专业,专长,专能,受赏识,团结同事 2从 基层管理到中层管理 重点:一专多能, 打造团队, 获取资源,对外沟通 3从中层到高层 重点:战略规划, 选拔人才 , 市场扩展
- CCEditBox
EditBox 创建添加 以及 一些函数参数的解析 #include "GUI/CCEditBox/CCEditBox.h" #include "GUI/CCContro ...
- 使用PHP配置文件
/**************************************************************************************** * 使用PHP配置文 ...
- HDFS超租约异常总结(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException)
HDFS超租约异常总结(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException) 转载 2014年02月22日 14:40:58 96 ...
- c++11之二: 类成员变量初始化
在C++11中, 1.允许非静态成员变量的初始化有多种形式:初始化列表; 使用等号=或花括号{}进行就地的初始化. 可以为同一成员变量既声明就地的列表初始化,又在初始化列表中进行初始化,只不过初始化列 ...
- Python网络编程中的select 和 poll I/O复用的简单使用
首先列一下,sellect.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select ...
- Azure上通过haproxy实现APP Gateway或WAF的http跳转https
Azure上的APP Gateway是七层负载均衡服务,WAF是APP Gateway服务的扩展.在实现七层负载均衡的同时,增加了WAF的功能,可以对后台的HTTP服务进行保护. Azure WAF采 ...