day02:js基础——运算符详解

2023-11-03

1.JS运算符分类

运算符类型 表示符号
数学运算符 + , - , * , / , %
比较运算符 >, >=, <, <=, == , !=, === , !==
赋值运算符 =, += , -=, *=, /= , %=
逻辑运算符 && , || , !
一元运算符 ++ , --,
三元运算符 ? :

2. 运算符的使用说明

  在上文我们列举了js中的运算符类型以及表示符号,下面配合代码进行学习。

2.1 数学运算符

js为弱类型语言,对类型的声明不做强制要求,所以我们正在进行运算的时候需要自己格外注意数据的类型

	    // 顾名思义,数学运算符用于进行数学运算
        // 先定义一些变量, 回想一下上一天的数据类型
        var num1 = 1,num2 = 2  
        var str1 = '1' , num3
        var num4 = NaN , str2 = ''
        var num5 = null, str3 = 'undefined'
        var bo1 = true, bo2 = false
        // 1. + 运算,用于进行加法运算
        console.log(num1+num2) // 3
        console.log(num1+str1) // 11
        console.log(num1+num4) // NaN
        console.log(num1+num3) // NaN
        console.log(num1+bo1)  // 2
        console.log(num1+bo2)  // 1  
        console.log(num1+num5)  // 1

        console.log(str1+str2) // 1 
        console.log(str1+str3) // 1undefined
        console.log(str1+bo1)  // 1true
        console.log(str1+bo2)  // 1false
        console.log(str1+num3) // 1undefined
        console.log(str1+num5) // 1null

        console.log(bo1+bo2) // 1
        console.log(bo1+num5) // 1
        // 2. - 运算,用于进行减法运算
        console.log(num1-num2) // -1
        console.log(num1-bo1)  // 0
        console.log(str1-str3) // NaN
        console.log(str1-bo1)  // 0

        // 3. * 运算,用于进行乘法运算
        console.log(num1*num2) // 2
        console.log(str1*str3) // NaN
        console.log(str1*bo1)  // 1

        // 4. / 运算,用于进行除法运算
        console.log(num2/num1) // 2
        console.log(str1/str3) // NaN
        console.log(str1/bo1)  // 1

        // 5. % 运算,用于进行取余数运算
        var num6 = 7
        console.log(num2%num1) // 0
        console.log(str1%str3) // NaN
        console.log(num6%num2)  // 1
  • 为什么会出现以上情况
    • 当加法遇到字符串,只要一侧有字符串,另一侧会自动转换成字符串,然后进行拼接;
    • 其他的运算都会先将左右的数据转换成数值(这里的转换是js自动使用Number方法进行转换,不再进行赘述)然后进行数学运算。

熟练掌握数据类型转换,记住'+'运算只有在遇到字符串才会转string,其余均通过Number()方法转换之后在进行数学运算

2.2 比较运算符

该运算符主要用于条件判断,其表达式返回一个布尔值

        var num1 = 10, num2 = 20, num3 = 10
        var str1 = '10', str2 = '20'
        console.log(num1 > num2)  //false 
        console.log(num1 < num2)  //true
        
        console.log(num1 >= num2)  //false 
        console.log(num1 <= num3)  //true

        console.log(num1 == str1)  //true 
        console.log(num1 === str1)  //false

        console.log(num1 != str1)  //false 
        console.log(num1 !== str1)  //true
  • 注意以下两点即可
    • <=, >= 表示的是大于 或者 等于
    • == , === 区别在于前一个只对于值进行比较,后一个对于值和类型都进行比较
    • != , !== 区别同上

2.3 赋值运算符

用于对变量赋值

        // = , 赋值
        var num1 = 1, num2 = 2 , num3 = 9
        // += -= /=  %=  均先进行数学运算在进行赋值
        console.log(num1+=num2)  // 等同于 num1 = num1+num2
        console.log(num1-=num2)  // 等同于 num1 = num1-num2
        console.log(num3%=num2)  // 等同于 num3 = num3%num2
        console.log(num3/=num2)  // 等同于 num3 = num1/num2

思考一下这里的输出结果是多少?

2.4 逻辑运算符

用于判断时进行多条件的连接

符号 效果
&& 条件均为真才返回true
|| 条件有一个为真返回true
对条件取反

根据上表以及2.2小节思考多条件连接的打印结果

	    var a = 11>10    
        // 取反   
        console.log(!a) 
        // 多条件连接
        console.log(14>10 && 20>5 && 2=='2')
        console.log(14>10 && 20>5 && 2==='2')
        console.log(14>10 && 20>5 || 2=='2')
        console.log(14>10 && 20>5 || 2=='2')
        // 逻辑短路问题
        14>11 && alert('我执行了吗?')
        10>11 && alert('我执行了吗?')
        14>11 || alert('我执行了吗?')
        10>11 || alert('我执行了吗?')

逻辑短路问题

	在js中,存在逻辑短路问题。
	代码从左向右执行
	- 当遇到&&连接的左侧条件为假,js会判断此语句后面写啥都改变不了判断的结果,此时产生短路&&右侧的代码均不执行
	- 当遇到||连接的左侧条件为真,js会判断此语句后面写啥都改变不了判断的结果,此时产生短路||右侧的代码均不执行

2.5 一元运算符

        var num1 = 1, num2 = 2
        console.log(num1++)  //1
        console.log(num1)    //2
        console.log(++num2)  //3

一元运算符分为前置、后置。

  • 当运算符在前面,为前置运算符,作用为不管此变量进行运算,输出等操作先执行前置运算。
  • 当运算符在后面,为后置运算符,作用为不管此变量进行运算,输出等操作先使用原来值,然后进行后置运算。

2.6 三元运算符

用法:条件? 结果1:结果2

	    //  当条件满足执行结果1, 不满足执行结果2
        console.log(10>5?'结果1':'结果2')
        console.log(10<5?'结果1':'结果2')

对于三元运算符后续会进行更加详细的说明

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

day02:js基础——运算符详解 的相关文章

  • 如何在chart.js中使用JSON数据?

    您好 我一直在尝试使用 MYSQL 数据库中的数据 并使用它们通过 Chart js 创建图形图表 我将数据编码为 JSON 数据 通过 php 文件名 data1 php 现在我需要使用 Jquery 或 javascript 将这些 J
  • 如何将 blob 文件附加到 HTML href="mailto:" 中

    我有一个可通过 URL 获取的文件 需要授权 我创建了一个 mailto 链接 并希望将此文件附加到邮件中 我怎样才能做到这一点 类似于 mailto 电子邮件受保护 cdn cgi l email protection attachmen
  • Highcharts 奇怪的分组行为

    我正在使用延迟加载 http www highcharts com stock demo lazy loading加载 OHLC 数据的方法 在服务器端 我使用 Python MySQL 并有 4 个包含 OHLC 数据的表 时间间隔为 5
  • 在 Nodejs/javascript 中的 Excel 中创建动态数量的列或标题

    我用过exceljsNodejs中用于将json数据导出到excel的模块 它工作正常 但必须在添加行之前预定义标题 列的名称 即列是固定的 添加行后 我无法动态添加列 我尝试了许多通过 npm 提供的模块 但它们都具有相同的功能 那么 有
  • jQuery show() 和 hide() 的更流畅替代方案

    我有一个带有隐藏列的页面设置 使用 jQuery show 和 hide 函数将列滑入和滑出 然而 它有点 笨重 并且在显示 隐藏时看起来不太流畅 相比之下 我还有一个使用 jquery UI 手风琴的页面部分 当在这些部分之间切换时 过渡
  • 如何清除画布元素中的多边形区域?

    我使用过clearRect函数 但没有看到多边形的等效函数 我天真地尝试过 ctx fillStyle transparent ctx beginPath ctx moveTo 0 0 ctx lineTo 100 50 ctx lineT
  • 如何在 Jquery Chosen 插件中搜索乌尔都语?还有其他方法在 Selectbox 中搜索乌尔都语吗?

    基本上我想在选择框中有搜索选项 并在选择框中选择实现的 jquery 所有选项均采用乌尔都语语言 如何扩展所选搜索以匹配乌尔都语 或者还有另一种方法在选择框中搜索乌尔都语 任何其他建议 提前致谢 有一种非常简单的方法可以将所有正则表达式逻辑
  • 根据用户的时间设置问候语(早上好,下午好......)

    任何人都可以推断如何根据用户的时间设置实现基本的 晚上好 或 早上好 也许 PHP 会获取服务器时间 但我希望用基于时间的适当问候语来问候网站访问者 并考虑到他们一天中的时间 E G 早上好 晚上好 下午好 基于它 getHours 日期对
  • 使用 ECMA 脚本向节点(页面)添加新属性

    我需要在页面激活时向页面添加属性 我决定建立一个工作流程 在激活步骤之前执行相同的操作 我的自定义工作流程步骤 激活步骤之前的步骤 使用 ECMA 脚本来实现此目的 这是我到目前为止所拥有的 var workflowData granite
  • 从变量值动态设置 ng-controller

    我正在使用 AngularJs 和 NodeJS 开发一个应用程序 我对将控制器的名称设置为主控制器中的变量的值感到震惊 为了更好地解释它 我的 index html 看起来像这样 tbody tr td td td member task
  • 如何使用 Soundcloud api 将流传输到 html5 音频播放器中?

    我刚刚开始学习 javascript 作为我的第一次尝试 我想创建自定义音频播放器 它使用 soundcloud 的 api 作为音乐源 到目前为止 这就是我的设置
  • Angular2 - 防止复选框被选中

    我有一个每行包含一个复选框的表 在表头中 我有一个Check All切换所有表格行框的复选框 我正在尝试实现一些逻辑 如果复选框的数量将超过特定限制 则显示错误并且不切换表行复选框或checkall盒子本身 有一个问题允许checkAll即
  • 特别更改画布上的笔画不透明度,但不更改颜色

    我有一个漂亮整洁的脚本 可以循环显示颜色 并且与 xxxxxx格式 但我想改变透明度 有没有办法做到这一点 我指的是ctx strokeStyle 这是当前的代码 canvas strokeStyle 16777215 s length i
  • 如何应对 WebStorm 中大量未解决的变量警告?

    我有一个从服务器获取数据的函数 function getData data console log data someVar 网络风暴说someVar是一个未解决的变量 我怎样才能摆脱这样的警告 我看到几个选项 禁止 IDE 设置中的警告
  • Electron 应用程序中的 NEDB 持久化

    我正在尝试从电子应用程序连接到 nedb CRUD 操作效果很好 但我没有看到 db 文件 D my db 检查隐藏文件 文件存在于某个地方 因为即使在机器重新启动后它也会保留数据 我怀疑电子威胁着我的相对路径 但我可以在任何地方找到它 v
  • 将base64图像转换为Node Js中的文件

    我是 Node Js 新手 我需要包含用户的个人资料图片 我从 IOS 应用程序收到 Base64 图像的请求 我需要将其存储在 images 文件夹中并将图像路径保存在 mongodb 数据库中 我使用了以下代码 var bitmap n
  • 如何运行 Mike Bostock 的 D3 示例?

    我一直在尝试经营迈克博斯托克透视地球仪 http bl ocks org mbostock 6747043例如 但是如果您尝试在本地重现它 则对其 json 文件的引用是不正确的 问题来自于这行代码 d3 json mbostock raw
  • 如何在 Servlet 中打开弹出窗口,然后重定向页面

    我想在调用 servlet 时打开一个弹出窗口 然后想将 servlet 重定向到某个 jsp page 这就是我所做的 protected void doGet HttpServletRequest request HttpServlet
  • 跨浏览器相当于explicitOriginalTarget事件参数

    有谁知道跨浏览器等价于explicitOriginalTarget事件参数 该参数是 Mozilla 特定的 它为我提供了导致模糊的元素 假设我的页面上有一个文本输入和一个链接 文本输入具有焦点 如果我点击链接 文本输入的模糊事件会通过ex
  • React 嵌入脚本标签不可样式化

    我打算将 SurveyMonkey 调查嵌入到我的网站中 用 React 制作 只是让它工作起来很麻烦 但最终这段代码工作了 let script let extractScript

随机推荐

  • ubuntu22设置静态IP 及 无线网卡启停

    标题 查看网络状态 ifconfig 开关无线网卡 sudo ifconfig wlo1 up down 搜索并显示wifi信号 sudo nmcli device wifi rescan nmcli device wifi list 连接
  • 文盘Rust -- 生命周期问题引发的 static hashmap 锁

    2021年上半年 撸了个rust cli开发的框架 基本上把交互模式 子命令提示这些cli该有的常用功能做进去了 项目地址 https github com jiashiwen interactcli rs 春节以前看到axum已经0 4
  • 路径参数和url传参

    请求参数的三种方式 第一种路径参数 后端接收 其中 PathVariabel注解的形参名字要与路径参数形参名字相等 不相等就用 value值来与路径参数名字相等 第二种url地址传参 url xxx abc get请求只能传query参数
  • 计算机白板记录,电子白板:计算机接口介绍

    电子白板 计算机接口介绍 接口类型指的是电子白板与电脑系统采用何种方式进行连接 电子白板 什么是计算机接口 目前电子白板与电脑连接常见的接口类型 有并口 也有称之为ieee1284 centronics 和串口 也有称之为rs 232接口的
  • java进阶Kafka集群实战之原理分析及优化教程全在这里

    我不去想是否能够成功 既然选择了Java 便只顾风雨兼程 我不去想能否征服Kafka集群 既然钟情于Java 就勇敢地追随千锋 我不去想Kafka集群有多么晦涩难懂 既然目标是远方 留给世界的只能是努力拼搏的背影 我不去想未来是平坦还是泥泞
  • 10.两个链表相加求和

    题目 假设链表中每一个节点的值都在 0 9 之间 那么链表整体就可以代表一个整数 给定两个这种链表 请生成代表两个整数相加值的结果链表 思路 首先是逆序相加 故这里用到了两个栈 分别存放两个链表中的值 两数相加会涉及到进位问题 所以考虑了进
  • ZeroQuant与SmoothQuant量化总结

    ref ZeroQuant Efficient and Affordable Post Training Quantization for Large Scale Transformers SmoothQuant Accurate and
  • qt程序运行时无任何错误提示信息,但是无法进入main函数

    问题 开发环境 win7 vs2013 qt 5 9 1 64位程序 qt程序运行时无任何错误提示信息 但是无法进入main函数 原因 程序中使用了visa库 使用的库的版本有问题
  • #ifndef, #define, #endif区别和使用

    文件中的 ifndef 头件的中的 ifndef 这是一个很关键的东西 比如你有两个C文件 这两个C文件都include了同一个头文件 而编译时 这两个C文件要一同编译成一个可运行文件 于是问题来了 大量的声明冲突 还是把头文件的内容都放在
  • 专访京东孙海波:大牛架构师养成记及电商供应链中区块链技术的应用

    编者按 每个人的成长曲线不同 有的人在研究生之时就已有相当知名的产品和框架 从而在接下来的工作中一路顺风顺水 有的人缺需要经历一个又一个的坑才能成长 不管是前者的聪明高效 还是后者的笨鸟先飞 他们都是在迈着脚步不断地向前 不妨 我们停下脚步
  • VS永久配置Opencv 和 Cmake配置OpenCV_contrib扩展模块 (整体思路 + 注意事项)

    1 VS永久配置Opencv 1 1 在opencv官网下载后并安装Opencv 官网地址 https opencv org 1 2 安装完成后 配置opencv的环境变量 1 3 在VS中配置opencv的属性表 步骤如下 1 在VS新建
  • 分割字符串的方法

    1 split 将一个字符串分割为子字符串 然后将结果作为字符串数组返回 2 indexOf 返回某个指定的字符串值在字符串中首次出现的位置 从左向右 没有匹配的则返回 1 否则返回首次出现位置的字符串的下标值 3 substr start
  • adb几个常见命令

    ADB Android Debug Bridge 调试桥 1 将设备连接到电脑 命令 adb connect 127 0 0 1 62001 2 检查设备连接情况 命令 adb devices 3 发送文件到设备 命令 adb push d
  • 基于Python的大数据的人才招聘数据分析与可视化平台应聘兼职-爬虫安装项目定制算法作业代做计算机毕业设计源代码

    更多项目资源 最下方联系IT实战课堂 博主拥有多年的T技术研发项目架构和教学经验 CSDN 51CTO 腾讯课堂等平台优质作者 高级讲师 培训机构联合创始人 现专注项目定制Java 小程序 前端网页 Python App NodeJs PH
  • STL之rotate

    STL对左旋转字符串针对三种不同数据结构进行了不同的实现 对单向链表采用的是同步位移 双向链表是三次翻转 都很简单 主要看看针对随机存取的数组做的循环位移实现 STL这个版本的源码如下 cpp view plain copy templat
  • UniCode 下 CString 转 char* 的方法

    1 Unicode下CString转换为char 方法一 使用API WideCharToMultiByte进行转换 CString str T D 校内项目 QQ bmp 注意 以下n和len的值大小不同 n是按字符计算的 len是按字节
  • (java功能篇)谷歌获取地址经纬度

    package com mohe map import java io BufferedReader import java io IOException import java io InputStreamReader import ja
  • vant+cropperjs 实现图片上传和图片截取

    完整代码
  • 【WEB安全】PHP靶场实战分析——DVWA

    文章目录 前言 一 实战前的准备 1 dvwa靶场安装 2 代码审计工具介绍 2 1 seay代码审计工具的介绍 2 2 rips 审计工具介绍 二 DVWA通关讲解 1 brute force 暴力破解 low Medium High i
  • day02:js基础——运算符详解

    js运算符 1 JS运算符分类 2 运算符的使用说明 2 1 数学运算符 2 2 比较运算符 2 3 赋值运算符 2 4 逻辑运算符 2 5 一元运算符 2 6 三元运算符 1 JS运算符分类 运算符类型 表示符号 数学运算符 比较运算符