JavaScript基础学习(7)

作者简介:码上言


代表教程:Spring Boot + vue-element 开发个人博客项目实战教程


专栏内容:个人博客系统


我的文档网站:http://xyhwh-nav.cn/


微信公众号:码上言

文章目录

    • 操作符
      • 1. 乘性操作符
        • 1.1 乘法操作符
        • 1.2. 除法操作符
        • 1.3. 取模操作符
      • 2. 指数操作符
      • 3. 加性操作符
        • 3.1. 加法操作符
        • 3.2 减法操作符

操作符

ECMA-262描述了一组可用于操作数据值的操作符,包括数学操作符(如加、减)、位操作符、关系操作符和相等操作符等。

1. 乘性操作符

ECMAScript定义了3个乘性操作符:乘法、除法和取模。在处理非数值时,它们也会包含一些自动的类型转换。如果乘性操作符有不是数值的操作数,则该操作数会在后台被使用Number()转型函数转换为数值。

1.1 乘法操作符

乘法操作符由一个星号(*)表示,可以用于计算两个数值的乘积。

let result = 34 * 56;

乘法操作符在处理特殊值时也有一些特殊的行为。

  • 如果操作数都是数值,则执行常规的乘法运算,即两个正值相乘是正值,两个负值相乘也是正值,正负符号不同的值相乘得到负值。如果ECMAScript不能表示乘积,则返回Infinity或-Infinity。
  • 如果有任一操作数是NaN,则返回NaN。
  • 如果是Infinity乘以0,则返回NaN。
  • 如果是Infinity乘以非0的有限数值,则根据第二个操作数的符号返回Infinity或-Infinity。
  • 如果是Infinity乘以Infinity,则返回Infinity。
  • 如果有不是数值的操作数,则先在后台用Number()将其转换为数值,然后再应用上述规则。
1.2. 除法操作符

除法操作符由一个斜杠(/)表示,用于计算第一个操作数除以第二个操作数的商。

let result = 66 / 11;

除法操作符针对特殊值也有一些特殊的行为。

  • 如果操作数都是数值,则执行常规的除法运算,即两个正值相除是正值,两个负值相除也是正值,符号不同的值相除得到负值。如果ECMAScript不能表示商,则返回Infinity或-Infinity。
  • 如果有任一操作数是NaN,则返回NaN。
  • 如果是Infinity除以Infinity,则返回NaN。
  • 如果是0除以0,则返回NaN。
  • 如果是非0的有限值除以0,则根据第一个操作数的符号返回Infinity或-Infinity。
  • 如果是Infinity除以任何数值,则根据第二个操作数的符号返回Infinity或-Infinity。
  • 如果有不是数值的操作数,则先在后台用Number()函数将其转换为数值,然后再应用上述规则。
1.3. 取模操作符

取模(余数)操作符由一个百分比符号(%)表示。

let result = 26 % 5; // 等于1

取模操作符对特殊值也有一些特殊的行为。

  • 如果操作数是数值,则执行常规除法运算,返回余数。
  • 如果被除数是无限值,除数是有限值,则返回NaN
  • 如果被除数是有限值,除数是0,则返回NaN。
  • 如果是Infinity除以Infinity,则返回NaN。
  • 如果被除数是有限值,除数是无限值,则返回被除数。
  • 如果被除数是0,除数不是0,则返回0。
  • 如果有不是数值的操作数,则先在后台用Number()函数将其转换为数值,然后再应用上述规则。

2. 指数操作符

ECMAScript 7新增了指数操作符,Math.pow()现在有了自己的操作符**,结果是一样的。

console.log(Math.pow(3, 2);    // 9
console.log(3 ** 2);           // 9console.log(Math.pow(16, 0.5); // 4
console.log(16** 0.5);         // 4

指数操作符也有自己的指数赋值操作符**=,该操作符执行指数运算和结果的赋值操作

let squared = 3;
squared **= 2;
console.log(squared); // 9let sqrt = 16;
sqrt **= 0.5;
console.log(sqrt); // 4

3. 加性操作符

加性操作符,即加法和减法操作符。不过,在ECMAScript中,这两个操作符拥有一些特殊的行为。与乘性操作符类似,加性操作符在后台会发生不同数据类型的转换。

3.1. 加法操作符

加法操作符(+)用于求两个数的和。

let result = 1 + 2;

如果两个操作数都是数值,加法操作符执行加法运算并根据如下规则返回结果:

  • 如果有任一操作数是NaN,则返回NaN;
  • 如果是Infinity加Infinity,则返回Infinity;
  • 如果是-Infinity加-Infinity,则返回-Infinity;
  • 如果是Infinity加-Infinity,则返回NaN;
  • 如果是+0加+0,则返回+0;
  • 如果是-0加+0,则返回+0;
  • 如果是-0加-0,则返回-0。

如果有一个操作数是字符串,则要应用如下规则:

  • 如果两个操作数都是字符串,则将第二个字符串拼接到第一个字符串后面;
  • 如果只有一个操作数是字符串,则将另一个操作数转换为字符串,再将两个字符串拼接在一起。

如果有任一操作数是对象、数值或布尔值,则调用它们的toString()方法以获取字符串,然后再应用前面的关于字符串的规则。对于undefined和null,则调用String()函数,分别获取"undefined"和"null"。

3.2 减法操作符

减法操作符(-)。

let result = 2 - 1;

减法操作符也有一组规则用于处理ECMAScript中不同类型之间的转换。

  • 如果两个操作数都是数值,则执行数学减法运算并返回结果。

  • 如果有任一操作数是NaN,则返回NaN。

  • 如果是Infinity减Infinity,则返回NaN。

  • 如果是-Infinity减-Infinity,则返回NaN。

  • 如果是Infinity减-Infinity,则返回Infinity。

  • 如果是-Infinity减Infinity,则返回-Infinity。

  • 如果是+0减+0,则返回+0。

  • 如果是+0减-0,则返回-0。

  • 如果是-0减-0,则返回+0。

  • 如果有任一操作数是字符串、布尔值、null或undefined,则先在后台使用Number()将其转换为数值,然后再根据前面的规则执行数学运算。如果转换结果是NaN,则减法计算的结果是NaN。

  • 如果有任一操作数是对象,则调用其valueOf()方法取得表示它的数值。如果该值是NaN,则减法计算的结果是NaN。如果对象没有valueOf()方法,则调用其toString()方法,然后再将得到的字符串转换为数值。

    let result1 = 5 - true; // true被转换为1,所以结果是4
    let result2 = NaN - 1;  // NaN
    let result3 = 5 - 3;    // 2
    let result4 = 5 - "";   // ""被转换为0,所以结果是5
    let result5 = 5 - "2";  // "2"被转换为2,所以结果是3
    let result6 = 5 - null; // null被转换为0,所以结果是5
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零拷贝的几种实现

mmapwrite() sendfile系统调用 sendfile SG-DMA

Python 中range和xrange有什么区别

Python 中range和xrange有什么区别 在Python中,range 和 xrange 是两个用于生成数字序列的函数,但它们之间有一些区别。让我详细解释一下: range 函数: range 函数用于生成一个数字序列,返回一个列表对象。语法&…

Linux I2C(二) - I2C软硬件架构

1,I2C的总线拓扑 2,I2C S/W topology linux kernel I2C framework使用如下的软件拓扑抽象I2C硬件(我们可以一起领会一下其中的“设备模型”思想): 1)platform bus(/sys/bus/platform&#xff0…

七、四个步骤实现FFmpeg推流播放实战

目录 1.Windows安装已经集成nginx-http-flv-module的nginx, 2.nginx.conf配置文件 3.ffmpeg推流 4.v

jmeter分布式压力测试搭建

配置master(controller) 配置jmeter.properties文件 remote_hostsxxx:1099,xxx:1099 #remote_hostslocalhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port) server_port1099 server.rmi.ssl.dis…

excel文件导入dbeaver中文乱码

1.将excel文件进行另存为,保存类型选择【CSV】 2.选择【工具】–>【web选项】–> 【编码】–> 【简体中文(GB18030)】 3.在DBeaver进行数据导入 直接导入应该就可以,如果不行的话按下面处理。 选择【导入数据——选择cs…

软考 - 系统架构设计师 - 基于口令的认证方式和基于公钥体系的认证方式

基于口令的认证方式和基于公钥体系的认证方式在网络安全领域都有广泛的应用,但它们各自具有不同的特点和使用场景。 基于口令的认证方式 基于口令的认证方式是一种传统的身份认证技术,用户通过输入预设的密码来验证身份。这种方式实现简单,成…

Python函数小知识

目录 一、函数的定义和调用 二、函数参数 三、函数作用域 四、递归函数和匿名函数 一、函数的定义和调用 def 函数名(参数): 自定义函数可以分为有参函数和无参函数 。 函数的作用: 在Python中定义函数可以提高代码的复用率,避免重复的代码,…

PLL深度解析第一篇——PLL的知识图谱

在硬件电路中,时钟就像心脏一样,在时钟的节拍下,不同的芯片、不同的电路、不同的接口都可以有序的进行工作或者通信(类似流水线一样,必须有节奏的运行)。 但是在芯片中,不同的模块和接口工作的频…

一个网络空间安全的小游戏

为了编写一个网络空间安全的小游戏,我们可以模拟一些基本的网络安全概念,如防火墙、入侵检测、病毒清理等。以下是一个简单的Python小游戏示例,其中玩家需要保护自己的网络免受攻击。 python复制代码 import random class Network: def __…

解决Jmeter 4.x 请求到elasticsearch 中文乱码的问题

文章目录 前言解决Jmeter 4.x 请求到elasticsearch 中文乱码的问题 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话&#…

Android Framework 获取所有应用的运行异常情况

Mdm需求,获取所有应用运行异常情况 实现 Android_source/frameworks/base/core/java/android/app/IActivityManager.aidl // add getAppRuntimeExceptionInfo List getAppRuntimeExceptionInfo();Android_source/frameworks/base/service/core/java/com/android/server/am/Acti…

C语言 | Leetcode C语言题解之第52题N皇后II

题目: 题解: struct hashTable {int key;UT_hash_handle hh; };struct hashTable* find(struct hashTable** hashtable, int ikey) {struct hashTable* tmp NULL;HASH_FIND_INT(*hashtable, &ikey, tmp);return tmp; }void insert(struct hashTabl…

为什么程序开发中不推荐使用全局变量?

​ 在软件开发中,全局变量是一种经常被使用但同时也被谨慎对待的概念。尽管全局变量具有方便和易用的特性,但它们往往带来了一系列潜在的问题,影响着代码的可维护性、可扩展性和健壮性。本文将深入探讨为何在程序开发中不推荐使用全局变量的原…

NASA数据集——2018-2024年VIIRS/NOAA20 深蓝 3 级每日气溶胶数据,1x1 度网格

VIIRS/NOAA20 Deep Blue Level 3 daily aerosol data, 1 degree x 1 degree grid 简介 联合极地卫星系统(JPSS)系列 NOAA-20 仪器的可见红外成像辐射计套件(VIIRS)NASA 标准三级(L3)每日深蓝气溶胶产品提…

2023最新!Git2.40.0于win10环境下的安装

2023最新!Git2.40.0于win10环境下的安装 git官网地址:https://git-scm.com/download/win/ 导航 文章目录 2023最新!Git2.40.0于win10环境下的安装导航一、下载Git二、安装Git三、检验 一、下载Git Git官网选择自己所需的版本下载 二、安装…

HCIP-Datacom-ARST必选题库_网络协议【道题】

一、单选 1.能够生成组播分发树的组播协议是: OSPF PIMv2 BGP IGMPv2 二、多选 1.以以下哪些属于多通道协议? Te1net P FTP H.323 SMTP LE 2.以下哪些协议属于多通道协议? SMTP Telnet H.323 FTP 三、简答 1.请将以下组网可靠性的备份技术与其相应特性进…

汕头联想 ibm x3500 M5服务器上门维修记录

汕头联想服务器现场检修;汕尾IBM服务器故障维修;揭阳戴尔服务器维修;汕头ERP服务器维修;潮阳地区各种服务器故障维修;各类服务器主板齐全; 分享一例从东莞到汕头某染料厂维修ibm system x3500 M5服务器的真…

使用composer开发自己的扩展包

前言 日常的开发中我们经常用到composer去安装其他人封装好的扩展包,如果你有好的功能代码想分享给其他人使用,就可以使用composer打包成扩展包。其他人用composer安装后就可以使用你的扩展包了。这篇文章教你如何打包自己的composer扩展包。 1.新建仓…

【线性代数 C++】求逆矩阵

对于 n n n阶矩阵 A A A,如果有 n n n阶矩阵 B B B,使 A B B A E ABBAE ABBAE,则说 A A A是可逆的,并把 B B B称为 A A A的逆矩阵. A A A的逆矩阵记作 A − 1 A^{-1} A−1,则 B A − 1 BA^{-1} BA−1.若 ∣ A ∣ ≠…