Javascript高级程序设计——4.运算符

2023-11-19

运算符

1、一元运算符
2、算术运算符(+、-、*、/)
3、关系运算符
4、相等运算符、全等运算符
5、逻辑运算符
6、位运算符(省略,不详细介绍)
7、赋值运算符
8、其他运算符
9、运算符优先级

  在ECMAScript与众不同之处在于

运算符可以适用于很多值,例如字符串、数字值、布尔值,甚至对象。
不过,在运用对象时,会调用对象的两种方法,以便获得可操作的值,如下:
(1)valueof()
(2)toString()

1、一元运算符

只能操作一个值的运算符

(1)递增++和递减运算符--

var box=100;

a、前置递增递减——

++box;       //把box累加1,类似于box=box+1;(box=101)
--box;       //把box累减1,类似于box=box-1;(box=99)

b、后置递增递减——

box++;      //同上
--box;      //同上

(2)前置和后置的区别

a、前置运算符(以++为例)“先运算,再赋值”

 示例1:
var box=100;
	var age=++box;      //现将box加1(box=101),再赋值给age(age=box=101)
	alert(age);	    //101

b、后置运算符(以++为例)“先赋值,再运算”

 示例2:
var box=100;
	var age=box++;    //现将box值赋值给age(age=100),box自身再加1(box=101)
	alert(age);       //100

(3)其他类型的字符串

示例3:
//1.数值字符串;
var box="89";
box++;        //box=90,先将数值字符串转换为数值;

//2、布尔类型时;
var box=false;
box++;     //false值为0,加1为1;

//3、字符串
var box=‘ab’;
box++;     //由于字符串包含非数值,转为NaN;

//4、toString()或valueof时
var box={
toString:function(){return 1;}
};
box++;
//此时box=1;若是var box={非数值字符串},返回NaN


(4)加和减运算符


示例4:
var box=100;
+box;     //+box为正数,-box为负数

示例5
var box=100;
+box;
alert(typeof box);    //返回string类型;

var box=100;
alert(typeof +box); //返回number类型;

2、算数运算符

(1)加法、减法——以加法为例
示例1:
var box=1+1;    //2
	var box=1+NaN;   //NaN;
	var box=100+'100';     //此时“+”为字符串连接运算符,只要其中一个为字符串,就不是加法运算符;
	var box='你的年龄是:'+10+20;   //数值在后边,就不是加法,即为字符串连接;
	var box=10+20+'你的年龄是:'     //alert(30'你的年龄是:');

解决办法是——将数值加减作为整体,“优先级”的概念
var box='你的年龄是:'+(10+20)  //'你的年龄是:30'
示例2:
var box=10+{};    
	alert(typeof box);   //字符串类型string;

若想返回数值,即必须为toString()valueof类型
var box={
		valueOf:function(){return -1}
	};
	alert(typeof box);    //number;

(2)乘法、除法

(具体的同上)

(3)求模、取余

var box=10%3;   //1
var box=10%true;    //1;
var box=10%NaN;   //NaN;
var box=10%{};     //NaN;
注意:仅在valueof或toString时才可以运算;


3、关系运算符

大多返回的是一个布尔值

(1)两个操作数都为数值,数值比较

(2)两个都是字符串,则比较两个字符串的编码,即ASCII码值

(3)两个操作数一个为数值,先将一个转换为数值,再比较

(4)两个操作数一个为对象,先调用valueOf或toString方法,再用结果比较


var box=3>2;   //true;
var box='3'>22;   //false;
va  box='3'>'22';    //true;
var box='a'>'b';    //false,a—97,b—98;
var box='a'>'B';   //true,B—66;
var box=1>对象;   //false
上述案例中,若将数值与对象相比,

	var box=1>{
	toString:function(){return 0;}
     }
	alert(box);    //true;

4-1、相等运算符

(1)两个操作数均为对象,判断是否指向同一个对象,若是则为true,否则false;

(2)全等和全不等的判断,若值和类型都相等,才返回true

(3)若一个操作数为NaN,则==返回false,!=返回true,并且与自身不相等

(4)若与true、false比较,则true=1,false=0;

(5)若与{...}比较,为false,除非是tostring或valueof

var box={}=={};
//false,比较的应该是他们的地址;

4-2、全等运算符

与相等运算符不同点是:不仅数值相等,数值类型也必须相等。

(1)null==undefined     true;

(2)'NaN'==NaN;               false;

(3)‘100’==100;           true;

(4)'100'===100     false  

(5)var box='' ==0;    true,空字符串比较,会转换为0

(6)var box=null==0;     false,虽说null会转为0,但在进行比较时,null和undefined无自动转化功能


5、逻辑运算符

一般和关系运算符结合起来使用

(1)逻辑与&&

a、等式两边必须同为true,才能返回true

b、若第二个为对象时,第一个为true,则返回第二个对象,否则返回false
var box=(5>4)&&{};      //object[];
c、若一个为null,返回null,
d、若一个为undefined,则返回undefined
(2)逻辑或||
a、只要等式一边为true,整体就返回true,等式两边都为false,返回false
b、第一个操作数为对象,返回第一个操作数
c、等式两边均为对象,返回第一个对象;
d、等式两边为null或undefined,返回null、undefined
(3)逻辑非!
一般情况下,返回的是布尔值true或false
a、一次取反——操作:先转型,再取反
var box=!(5>4);     false;
b、两次取反——操作:再取反,再一次取反(得到原型的布尔值)
var  box=!!(5>4);   true;

6、位运算符

(由于基本用不到,所以不做详细的介绍,省略)

7、赋值运算符

(1)简单的,用“=”表示,将右侧值赋值给左侧的变量
var box=100;
(2)复杂的复合运算
+=、-=、/=、*=、%=

8、其他运算符

(1)逗号运算符
逗号运算可以在一条语句中执行多个操作
var box=100,age=20,height=167;  //变量
var box=(1,2);          //数组
var box={1:2,2:3,3:4};    //对象
(2)字符串运算符
用于将字符串连接起来(如“+”)
(3)三元运算符(条件运算符)
var box=5>4  ? true:false;

9、运算符优先级

一般运算不考虑运算符优先级,若要考虑,可对变量用括号连接,提高优先级级别
var box=5+2*2;    //9
var box=(5+2)*2;   //14
     
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript高级程序设计——4.运算符 的相关文章

随机推荐

  • 【10】Docker私有仓库

    一 私有仓库搭建与配置 1 拉取 私有仓库 镜像 docker pull registry 2 创建并启动 私有仓库 容器 docker run di name registry p 5000 5000 registry 打开浏览器输入地址
  • JavaScript Boolean 对象

    解释 Boolean 对象用于转换一个不是 Boolean 类型的值转换为 Boolean 类型值 true 或者false 语法 var a true var b false Boolean 对象属性 属性 描述 constructor
  • 数据结构学习系列之顺序表的两种创建方式

    方式1 通过返回值返回所申请的内存空间的首地址 示例代码 list t create seq list 1 list t p list t malloc sizeof list t if NULL p printf 内存分配失败 n exi
  • linux内核、驱动和硬件之间的关系和通信

    linux驱动是直接和硬件打交道的软件程序 层次结构上 它处于操作系统和硬件之间 驱动与linux内核的关系 驱动程序提供的一组设备驱动接口函数Device Driver Interface给操作系统在linux中 这一组设备驱动接口函数一
  • 前端axios下载excel文件(二进制)的处理方法

    前端axios下载excel文件 二进制 的处理方法 后端生成excel后 前端 click 事件进行下载 脱坑记录 亲测有效 lz 使用的是 axios 发起请求 首先 介绍一下思路 准备通过动态创建 a 标签 通过 blob 对象进行接
  • java调优总结

    JVM调优总结 序 几年前写过一篇关于JVM调优的文章 前段时间拿出来看了看 又添加了一些东西 突然发现 基础真的很重要 学习的过程是一个由表及里 再由里及表的过程 呵呵 所谓的 温故而知新 而真正能走完这个轮回的人 也就能称为大牛或专家了
  • 补充:YOLO模型训练时loss出现nan值或者测试时P\R\map全部为0值的解决办法(GTX16xx系列显卡)

    补充 1 参考1 2 补充 3 小结 1 参考1 在参考有头发的垃圾猿的 YOLO系列训练时出现loss出现nan值或者测试时P R map全部为0值的解决办法 GTX16xx系列显卡大坑 后 发现问题不能得到实际的解决 可能是版本不一样导
  • vs调试正确显示utf8格式字符串

    vs调试正确显示utf8格式字符串 自从将visual studio从2010升级到2015后 发现调用接口的utf8格式字符串不能正常显示了 常常被莫名其妙截断 查了下 原来可以直接将变量拖到watch窗口中 在变量名后面手动添加 s8予
  • 计算机网络的两级子网指,计算机三级网络技术分类练习题_网络基本概念(一).doc...

    您所在位置 网站首页 gt 海量文档 nbsp gt nbsp资格 认证考试 nbsp gt nbsp计算机等级考试 计算机三级网络技术分类练习题 网络基本概念 一 doc6页 本文档一共被下载 次 您可全文免费在线阅读后下载本文档 下载提
  • 高可用集群(1)- Pacemaker+Corosync实现负载均衡和高可用

    1 问题引入 计算机集群可用于提供高可用性服务或资源 多台机器的冗余是用来防止多种类型的故障 集群将使用Pacemaker和Corosync提供资源管理和消息传递 下面将介绍所需的包和对其配置文件的修改 以及使用Pacemaker命令行工具
  • 循环的断点调试,指定第几次循环

    循环的断点调试 指定第几次循环 右击断点添加条件 断点要设置在条件之后 例如本次 想要i 3的时候的循环 条件要设到i后边 令i 3 回车 再按F5即可
  • CSS 学习笔记(基础)

    用来控制网页表现的语言 CSS Cascading Style Sheet 层叠样式表 然后我们继续看看 W3C 标准 结构 HTML 表现 CSS 行为 JavaScript CSS导入方式 选择器 属性 由于网页的框架结构是由HTML实
  • pydantic学习与使用 ------ 基本模型(BaseModel)使用

    前言 在 pydantic 中定义对象的主要方法是通过模型 模型继承 BaseModel pydantic主要是一个解析库 而不是验证库 验证是达到目的的一种手段 建立一个符合所提供的类型和约束的模型 换句话说 pydantic保证输出模型
  • Google FlatBuffers——开源、跨平台的新一代序列化工具

    前段时间刚试用了一个序列化工具cereal 请看 cereal C 实现的开源序列化库 打算再总结下我对google proto buf序列化库的使用呢 结果还没动手 大Google又出了一个新的 开源 跨平台的序列化工具 FlatBuff
  • ubuntu14 扩容的痛苦经历,在这里为大家献上我的过程(附带有gparted-live-0.25.0-3-i686下载地址)

    参考文档 https www linuxidc com Linux 2015 08 121674 htm VMware11下对虚拟机Ubuntu14 10系统所在分区sda1进行磁盘扩容 http www nxpic org module
  • CSS 语法

    CSS 规则集 rule set 由选择器和声明块组成 选择器指向您需要设置样式的 HTML 元素 声明块包含一条或多条用分号分隔的声明 每条声明都包含一个 CSS 属性名称和一个值 以冒号分隔 多条 CSS 声明用分号分隔 声明块用花括号
  • 提高情商6步法

    目录 1 识别与洞察 2 自制与表达 3 共情与共鸣 4 尊重与善意 5 认同与化解 戈尔曼把情商概括为以下五个方面的能力 认识自身情绪的能力 妥善管理情绪的能力 自我激励的能力 认识他人情绪的能力 管理人际关系的能力 1 识别与洞察 感知
  • Linux环境 Mysql安装详解

    Linux环境 Mysql安装详解 前言 mysql作为被广泛使用的数据库 安装的必要性是无需质疑的 而本人在多次安装中遇到了情况各异的问题 所以想以这篇文章记录一下安装配置的过程 并且尽量详细介绍每一步的原因 如果再遇到问题 知其然且知其
  • Inno打包后开始运行前检查文件是否存在

    Code function FileDoesNotExist file string Boolean begin if FileExists file then begin Result False end else begin Resul
  • Javascript高级程序设计——4.运算符

    运算符 1 一元运算符 2 算术运算符 3 关系运算符 4 相等运算符 全等运算符 5 逻辑运算符 6 位运算符 省略 不详细介绍 7 赋值运算符 8 其他运算符 9 运算符优先级 在ECMAScript与众不同之处在于 运算符可以适用于很