03.JS运算符
前言:
学习一门编程语言的基本步骤
(01)了解背景知识
(02)搭建开发环境
(03)语法规范
(04)常量和变量
(05)数据类型
(06)数据类型转换
(07)运算符
7.运算符
表达式:由运算符连接的操作数据,所组成的形式。
运算符分为算数运算符,比较运算符,逻辑运算符,位运算符,赋值运算符,三目运算符
(1)算术运算符——math
+ (加)
- //加
- console.log(3+2);//
- (减)
- //减
- console.log(3-2);//
* (乘)
- //乘
- console.log(3*2);//
/ (除)
- //除
- console.log(3/2);//1.5
% (取余)隔行换色,判断是否为闰年
- //取余
- console.log(3%2);//
- console.log(2%3);//
++(自增)在原来的基础上加1
- //自增
- var a=1; //此时a值是1
- a++; //在原来的基础上加1,此时a值是2
- console.log(a); //获取加1之后的a,此时a值是2
- console.log(a++);//在a=2的基础上加1,此时a值为3,存在内存之中,
- console.log(a); // 重新获取a值,a值为3
--(自减)在原来的基础上减1
- //自减
- var b=3; //此时b值是3
- b--; //在原来的基础上减1,此时b值是2
- console.log(b); //获取减1之后的b,此时b值为2
- console.log(b--); //在b=2的基础上减1,此时b值为1,存在内存当中
- console.log(b); //重新获取b值,b值为1
console.log(a++);先打印a的值,在执行自增
- // 先打印a的值,在执行自增
- //1.声明一个变量
- var a=1;
- //此时a还是1,打印就是1,打印完后,在执行自增,这时候a变成2,存在内存当中
- console.log(a++);//输出为1
- //重新从内存中获取a的值
- console.log(a);//输出为2
console.log(++a);先执行自增,在打印a的值
- //先执行自增,在打印a的值
- //2.声明变量a
- var a=1;
- //先让a的值执行自增,此时a的值变成了2,然后在打印a的值就是2
- console.log(++a);//输出为2
- //重新获取值也是2
- console.log(a);//输出为2
- //综合
- var num=3;
- //第一个num的值打印为3,但是内存为2,影响内存中的储存的值,然后后面的num取内存中的值,所以是1,3+1=4,
- console.log(num--+--num);//
(2)比较运算符——compare
返回都是一个布尔型的值,如果数据类型不同,会发生数据类型的转换
> (大于)
- //> 大于
- console.log(3>4);//false
< (小于)
- //< 小于
- console.log(3<4);//true
>= (大于等于)
- //> 大于等于
- console.log(3>=4);//false
<= (小于等于)
- //< 小于等于
- console.log(3<=4);//true
== (等于) 比较两个值是否相等
- //== 等于 只比较值,不比较类型
- console.log(7=='7');//ture
!= (不等于)
- //!=不等于
- console.log(3!=4);//true
- console.log(3!=3);//false
- console.log(3!='3');//false 仅比较值
=== (全等于) 不仅比较值,还会比较类型是否相等
- //=== 全等于 比较值和类型
- console.log(7==='7');//false
!== (全不等于)
- //!==不等于
- console.log(3!==4);//true
- console.log(3!==3);//false
- console.log(3!=='3');//true 比较值和类型
数据类型的转换
- //数字类型转换 字符串转成了数字
- console.log(13>'10');//ture
- //两个字符串比较,比较的是首个字符的Unicode码,3——> 51 1——> 49 a——> 97
- console.log('3'>'10');//true
- console.log('张铁牛'>'张大柱');//true
- console.log('张'.charCodeAt()>'张'.charCodeAt());//false
- console.log('铁'.charCodeAt());//
- console.log('牛'.charCodeAt());//
- console.log('大'.charCodeAt());//
- console.log('柱'.charCodeAt());//
NaN和任何值比较(> < >= <= == === != !==),包括自身,都返回false。
- //NaN和任何值比较
- //3>NaN
- console.log(3>'10a');//false
- //3<NaN
- console.log(3<'10a');//false
- //3>=NaN
- console.log(3>='10a');//false
- //3<=NaN
- console.log(3<='10a');//false
- //3==NaN
- console.log(3=='10a');//false
- //3===NaN
- console.log(3==='10a');//false
- //NaN==NaN
- console.log(NaN==NaN);//false
- //NaN===NaN
- console.log(NaN===NaN);//false
- //3!=NaN
- console.log(3!='10a');//true
- //3!==NaN
- console.log(3!=='10a');//true
(3)逻辑运算符——logic
and && 并且 关联的两个条件都满足,结果是ture否则是false
- //并且 &&
- //判断一个人的工资是否在5000-8000支间
- var salary=7000;
- console.log(salary>=5000 && salary<=8000);//true
- //声明两个变量,分别保存用户名和密码,如果用户名为root,并且密码为123456,打印true,否者false。
- var uname="root";
- var password="123456";
- console.log(uname==="root" && password==="123457");//false
or || 或者 关联的两个条件满足其一,结果是ture,否者是false
- //或者 ||
- //判断是否满足让座标准,儿童12岁以下或者老人65岁以上
- var age=50;
- console.log(age<=12 || age>=65);//false
- //声明变量保存用户,如果使用用户名root或者使用手机号码18112345678,满足其一,打印true,否者false
- var uname="root";
- var uname="18112345678";
- console.log(uname==="root" || uname==="18112345678");//true
! 非 取反向 !ture=false !false=true
- //取反向 !
- var r=true;
- console.log(!r);//false
(4)逻辑短路,关注点不在结果是真假,关注点在后面的程序是否会执行!!!
and=&& 并且 当第一个条件为false的时候,就不需要在执行第二条件
- //逻辑短路
- //and=&& 并且 当第一个条件为false的时候,就不需要在执行第二条件
- var num=3;
- num>5 && console.log(num);//false,不执行后续
- num<5 && console.log(num);//
or = || 或者 当第一个条件为true的时候,就不需要执行第二条件
注意事项:逻辑短路无需关注运算符的整个逻辑计算的结果是ture还是false,重点看是否会执行第二条件。
- //or= || 或者 当第一个条件为true的时候,就不需要执行第二条件
- var num=3;
- num>1 || console.log(num);//true,后续不执行
- num<1 || console.log(num);//前面为false,继续执行,结果3
- //综合:变量保存年龄,如果满18周岁,打印"成年人"
- var age=19;
- console.log(age>=18 && "成年人");//成年人
(5)位运算符(了解即可)
在执行运算的时候,计算机会把数据转成二进制,来进行运算
按位于 (&),上下两位都是1,结果是1,否则是0.
- //按位于(&),上下两位都是1,结果是1,否则是0.
- /*
- 011
- 101
- ————
- 001
- */
- console.log(3&5);//
按位或 (|),上下两位含有1,结果是1,否者是0,
- //按位或 (|),上下两位含有1,结果是1,否者是0,
- /*
- 101
- 111
- ————
- 111
- */
- console.log(5|7);//
按位异或(^) ,上下两位不同为1,相同为0.
- // 按位异或(^) ,上下两位不同为1,相同为0.
- /*
- 101
- 111
- ————
- 010
- */
- console.log(5^7);//
按位右移(>>),删除二进制的最后一位,成倍减少
- //按位右移(>>),删除二进制的最后一位,每增加一次右移,结果成倍减少一次
- console.log(8>>1);//
- console.log(8>>2);//
- console.log(8>>3);//
按位左移(<<),在最后一位增加一位0,成倍增长
- // 按位左移(<<),在最后一位增加一位0,每增加一次左移,结果成倍增长一次
- console.log(5<<1);//
- console.log(5<<2);//
- console.log(5<<3);//
(6)赋值运算符
= 等于
- //等于
- var a=1;//给a赋值为1
+= 加等于
- //加等于
- //运算符的优先级,+号优先于=号
- var a=1;
- //第一种写法,在原来基础上+1,把结果赋给a
- a=a+1;
- console.log(a);
- //第二种写法,在原来基础上+1,把结果赋给a
- a+=1;
- console.log(a);
- //在赋值运算符中,加等于可以用于字符串拼接
- var str='a';
- str+='b';
- console.log(str);//'ab'
-= 减等于
- //减等于
- var a=5;
- //普通写法
- a=a-1;
- console.log(a);//
*= 乘等于
- //乘等于
- //打八折,在原来的基础上打八折
- var price=1500;
- //赋值运算符写法
- price*=0.8;
- console.log(price);//
/= 除等于
- //除等于
- //总分数552,求6科平均成绩
- var score=552;
- score/=6;
- console.log(score);//
%= 取余等于
- //取余等于
- //注意:运算符的优先级:先执行并且,再执行或者;
- //声明变量保存一个年份,判断这个年份是否为闰年,结合逻辑短路,如果是闰年就打印闰年
- var year=1999;
- (year%4===0 && year%100!==0 || year%400===0) && console.log("闰年");//false
(7)三目运算符
一目:一个运算符连接一个数据
a++ b-- !c
二目:一个运算符连接两个数据
a+1 a-1 a*1 a/1 a>1 a<1 a=1 a!1等等
三目:两个运算符连接三个数据
条件表达式?表达式1:表达式2
如果条件表达式为ture执行表达式1,
如果条件表达式为false执行表达式2
- //三目运算符
- //根据年龄判断是否为成年人
- var age=19;
- age>=18?console.log('成年人 '):console.log('未成年人');//成年人
- //声明两个变量来保存用户名和密码,如果用户名为root,并且密码为123456,打印成功,否则打印失败
- var uname='rot';
- var pwd='123456';
- (uname==='root' && pwd==='123456') ? console.log('登录成功'):console.log('登录失败');//登录失败
- var uname1='root';
- var pwd1='123456';
- (uname1==='root' && pwd1==='123456') ? console.log('登录成功'):console.log('登录失败');//登录成功
03.JS运算符的更多相关文章
- js运算符的一些特殊应用
作者: 小文 来源: http://www.cnblogs.com/daysme/ 时间: 2017/3/2 17:21:03 本文集合了了js运算符的一些特殊应用. js位运行符的运用. js运算符 ...
- JS运算符
JS运算符: 使用的运算符的时候不需要声明变量,运算符非变量:1.算术运算符 + - * / % (%为取余数运算符) (自增运算符++) (自减运算符 --) + 运算符作用:1.数值相加 2.字符 ...
- JavaScript学习03 JS函数
JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...
- js 运算符优先级
在看jquery源码,仔细看入口函数的时候,有点懵了.看到与或.多重三目,傻傻的分不清,就代码仔细的区分下运算符优先级,以前都是呼呼的飘过.看来任何一个细节都不能忽略,不然效率极低.. !functi ...
- js运算符单竖杠“|”的用法和作用及js数据处理
js运算符单竖杠“|”的作用 很多朋友都对双竖杠“||”,了如指掌,因为这个经常用到.但是大家知道单竖杠吗?今天有个网友QQ问我,我的 javascript实用技巧,js小知识 , 这篇文章里面,js ...
- js值类型转换(boolean/String/number),js运算符,if条件,循环结构,函数,三种弹出框
js值类型转换 number | string | boolean boolean类型转换 num = 0; var b1 = Boolean(num); console.log(b1) 转化为数字类 ...
- js课程 2-6 js如何进行类型转换及js运算符有哪些
js课程 2-6 js如何进行类型转换及js运算符有哪些 一.总结 一句话总结: 1.所有类型->布尔类型(为假的情况)有哪些(6种)? 1)字符串('')2)整型(0)3)浮点型(0.0)4) ...
- 033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结
033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结 本文知识点:运算符和表达式知识点总结 前面学习的几篇文都是运算符和表达式相关的知 ...
- 032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题
032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例--闰年问题 本文知识点:运算符和if-else条件语句的综合案例 ...
随机推荐
- NOI3.1 6377:生日相同 2.0
描述 在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日.试找出所有生日相同的学生. 输入 第一行为整数n,表示有n个学生,n ≤ 180.此后每行包含一个字符 ...
- 团队项目-Beta冲刺2
博客介绍 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业要求在哪里 https://w ...
- printf 函数笔记
函数声明 int printf (const char*, ...); 说明 <返回值> printf ("<格式化字符串>", <参数表>); ...
- Dynamics CRM Package Deployer 部署工具
CRM 部署工具非常有用 我们可以用部署工具来做迁移,部署 等等. Package Deployer可以同时部署多个solutions. 并且也可以勾选solution的plugin也同时部署. 三 ...
- Linux环境下的network IO
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的network IO. ...
- 设计模式-03工厂方法模式(Factory Method Pattern)
插曲.简单工厂模式(Simple Factory Pattern) 介绍工厂方法模式之前,先来做一个铺垫,了解一下简单工厂模式,它不属于 GoF 的 23 种经典设计模式,它的缺点是增加新产品时会违背 ...
- linux容器技术和Docker
linux容器技术和Docker 概述 Docker在一定程度上是LXC的增强版,早期的Docker使用LXC作为容器引擎,所以也可以说Docker是LXC的二次封装发行版,目前docker使用的容器 ...
- JavaScript(4)---BOM详解
JavaScript(4)---BOM详解 之前写过一篇有关DOM的博客:JavaScript(2)---DOM详解 DOM有个顶级对象叫:document.同样BOM中也有顶级对象叫 window. ...
- hive安装启动错误总结
错误一: Exception in thread "main" java.lang.NoClassDefFoundError: jline/console/completer/Ar ...
- 记一次golang的内存泄露
程序功能 此程序的主要功能是将文件中数据导入到clickhouse数据库中. [问题描述] 服务器内存每隔一段时间会耗尽 [问题分析] 由于使用的是go语言开发的,所以采用了业界流行的工具pprof. ...