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日 ...
随机推荐
- MVC 成功创建了数据库,但是数据库对象创建失败[此引用关系将导致不允许的周期性引用]
model 类的属性写错了 错误写法: public province { public int provinceId; public string Name; } public City ...
- MySQL 大数据量修改表结构问题
前言: 在系统正常运作一定时间后,随着市场.产品汪的需求不断变更,比较大的一些表结构面临不得不增加字段的方式来扩充满足业务需求: 而 MySQL 在体量上了千万.亿级别数据的时候,Alter Tab ...
- keras中无法下载 https://s3.amazonaws.com/img-datasets/mnist.npz 解决方法
网址:https://s3.amazonaws.com/img-datasets/mnist.npz,由于显而易见的原因,无法访问. npz实际上是numpy提供的数组存储方式,简单的可看做是一系列n ...
- requests 简单应用
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html ,官方文档.自己有空看看顺便敲两下熟悉一下. 还有别把文件放的太深 ...
- 2018-2019-2 20165210《网络对抗技术》Exp6 信息搜集与漏洞扫描
2018-2019-2 20165210<网络对抗技术>Exp6 信息搜集与漏洞扫描 一.实验目标: 掌握信息搜集的最基础技能与常用工具的使用方法. 二.实验内容: 各种搜索技巧的应用 G ...
- fiddler抓包
1.fiddler安装 下载exe安装文件,傻瓜式安装 2.fiddler配置 点击Tools -->Telerik Fiddler Options -->Https,进入以下对话框 Ht ...
- myEclipse下Maven配置操作
一.Maven 安装与配置 1.点击计算机属性里的高级系统设置,点开环境变量进行配置 2.检验配置是否成功 二.手动创建一个Maven项目,并编译运行成功 1.创建一个文件夹作为项目的根目录 2. 在 ...
- bzoj 2013: A huge tower 数学
题目: 有\(N(2\leq N\leq 620000)\)块砖,要搭一个\(N\)层的塔,要求:如果砖\(A\)在砖\(B\)上面,那么\(A\)不能比\(B\)的长度\(+D\)要长.问有几种方法 ...
- java shell排序
原理图: package suanfa; public class shellInsert { public void shellInsert1(double [] sorted,int inc){ ...
- 尚硅谷Java视频教程导航(学习路线图)
最近很火,上去看了看,对于入门的人还是有点作用的,做个记号,留着以后学习. Java视频教程下载导航(学习路线图) 网站地址:http://www.atguigu.com/download.shtml