1、运算符

  术语或者叫法:一元运算符、二元运算符、运算元(参数)

  let x=0; x=5+2; //5和2为运算元,“+” 为二元运算符; x=-x; //"-" 为一元运算符

  字符串连接功能,二元运算符 +

  示例:

 let s = "my" + "string";
alert(s); // mystring alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21" //运算符的运算方向是由左至右。如果是两个数字,后面再跟一个字符串,那么两个数字会先相加,再转化为字符串
alert(2 + 2 + '1' ); // "41" 而不是 "221" 字符串连接和转化是二元运算符加号 + 的一个特性。其它的数学运算符都只对数字有效。通常,他们会转化运算元为数字。 alert( 2 - '1' ); // 1
alert( '6' / '2' ); // 3

  数字转化功能,一元运算符 +

 //对数字无效
let x = 1;
alert(+x);//1 let y = -2;
alert(+y);//-2 //转化非数字
alert(+true); //1
alert(+""); //0
//这种方式和Number(...)相同,但是更加简短 let apples = "5"
let oranges = "3"
alert(+apples+ +oranges);//5
//或者
alert( Number(apples) + Number(oranges) );//5

运算符优先级

赋值运算符

 let x= 3*7+9-3
alert(x)

求余运算符 %

 alert(5%2);//1是5/2的余数
alert( 8 % 3 ); // 2 是 8 / 3 的余数
alert( 6 % 3 ); // 0 是 6 / 3 的余数

幂运算符 **

 alert( 2 ** 2 ); // 4  (2 * 2)
alert( 2 ** 3 ); // 8 (2 * 2 * 2)
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2) alert( 4 ** (1/2) ); // 2 (1 / 2 幂相当于开方,这是数学常识)
alert( 8 ** (1/3) ); // 2 (1 / 3 幂相当于开三次方)

自相加/自相减

//自相加
let counter = 2;
counter++; // 和 counter = counter + 1 效果一样,但是更加简洁
alert( counter ); // 3 //自相减
let counter = 2;
counter--; // 和 counter = counter - 1 效果一样,但是更加简洁
alert( counter ); // 1
 //符号前置 与后置

 let counter = 1;
let a = ++counter; // 返回自增完之后的值
alert(a); // 2 let counter = 1;
let a = counter++;// 返回未自增时的值
alert(a)

位运算符

  • 按位与 ( & )
  • 按位或 ( | )
  • 按位异或 ( ^ )
  • 按位非 ( ~ )
  • 左移 ( << )
  • 右移 ( >> )
  • 无符号右移 ( >>> )

修改并替换

 let n = 2;
n += 5; // now n = 7 (同 n = n + 5)
n *= 2; // now n = 14 (同n = n * 2)
alert( n ); // 14

逗号运算符

 let a = (1 + 2, 3 + 4);
alert( a ); // 7 (3 + 4 的结果) 第一个语句 1 + 2 运行了,但是它的结果被丢弃了,然后 3 + 4 运行,计算结果被返回

2、值的比较

  比较方式:

  • 大于 / 小于:a > ba < b
  • 大于等于 / 小于等于:a >= ba <= b
  • 检测两个值的相等写为 a == b(注意表达式中是两个等号 =,若写为单个等号 a = b 则表示赋值)。
  • 检测两个值的不等,在数学中使用 符号,而在 JavaScript 中则通过在赋值符号前增加叹号表示:a != b

  比较逻辑:

  • 比较操作符始终返回逻辑值。
  • 字符串间按“词典”顺序逐字符比较大小。
  • 当待比较的值类型不同时,它们会被转为数字(不包括严格相等检测)进行比较。
  • 在非严格相等 == 下,nullundefined 相等且各自不等于任何其他的值。
  • 在使用 >< 进行比较时,需要注意变量可能为 null/undefined 的情况。比较好的方法是单独检查变量是否等于 null/undefined

  注意事项:

//严格相等  比如区分0和false
alert( 0 == false ); // true
alert( '' == false ); // true
alert( 0 === false ); // false,这种方式可以区分出来,上面两种不可以
 null 和 0 的比较
alert(null > 0) ;//false
alert(null < 0 );//false
alert(null >=0);//true
//原因:因为 “==” 比较是独立的,当判断null > 0 时已经返回了false 所以再进行“==”比较叫返回的为true undefined 和 0
alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)
原因:
(1) 和 (2) 中返回 false 是因为 undefined 在比较中被转换为了 NaN,而 NaN 是一个特殊的数值型取值,它与任何值进行比较都会返回 false。
(3) 中返回 false 是因为这是一个相等性检测,而 undefined 只与 null 相等,不会与其他值相等。

3、交互 alert prompt confirm

alert
显示信息。
 alert("Hello");
prompt
显示信息要求用户输入文本。点击确定返回文本,点击取消或按下 Esc 键返回 null
 let age = prompt('How old are you?', 100);

 alert(`You are ${age} years old!`); // You are 100 years old!
confirm
显示信息等待用户点击确定或取消。点击确定返回 true,点击取消或 Esc 键返回 false
 let isBoss = confirm("Are you the boss?");

 alert( isBoss ); // true 如果“确定”被按下

这些方法都是模态的:它们暂停脚本执行,并且不允许用户与该页面的其余部分交互,直到窗口被解除。

上述所有方法共有两个限制:

  1. 模态窗口的确切位置由浏览器决定。通常在页面中心。
  2. 窗口的确切外观还取决于浏览器。我们不能修改它。

4、条件运算符 if    ?

if 的使用

 let year = prompt('In which year was ECMAScript-2015 specification published?', '');

 if (year <) {
alert( 'Too early...' );
} else if (year > 2015) {
alert( 'Too late' );
} else {
alert( 'Exactly!' );
}

?的使用

 let age = prompt('age?', 18);

 let message = (age <) ? 'Hi, baby!' :
(age < 18) ? 'Hello!' :
(age < 100) ? 'Greetings!' :
'What an unusual age!'; alert( message );

5、逻辑运算符

  JavaScript 里有三个逻辑运算符:|| (或), && (与), ! (非)。

  或运算符寻找第一个真值

 alert( 1 || 0 ); // 1(1 是真值)
alert( true || 'no matter what' ); //(true 是真值) alert( null || 1 ); // 1(1 是第一个真值)
alert( null || 0 || 1 ); // 1(第一个真值)
alert( undefined || null || 0 ); // 0(所有的转化结果都是 false,返回最后一个值)

  与操作寻找第一个假值

 // 如果第一个操作符是真值,
// 与操作返回第二个操作数:
alert( 1 && 0 ); // 0
alert( 1 && 5 ); // 5 // 如果第一个操作符是假值,
// 与操作直接返回它。第二个操作数被忽略
alert( null && 5 ); // null
alert( 0 && "no matter what" ); // 0

  !(非)

  操作符接受一个参数,并按如下运作:

    1.  将操作数转化为布尔类型:true/false
    2. 返回相反的值。

  

 alert( !true ); // false
alert( !0 ); // true
 //两个非运算 !! 有时候用来将某个值转化为布尔类型:
alert( !!"non-empty string" ); // true
alert( !!null ); // false
//更详细方式
alert( Boolean("non-empty string") ); // true
alert( Boolean(null) ); // false

  

  

javaScript 基础知识汇总(二)的更多相关文章

  1. javaScript 基础知识汇总 (十二)

    1.属性的标志和描述符 属性的标志 对象属性除value外还有三个特殊属性,即标志 writable ----如果为true,则可以修改,否则它只是只读的. enumerable ----如果为tru ...

  2. JavaScript基础知识汇总

    1. 图片热区: <img src="logo.jpg" usemap="#logo"> <map id="logo" n ...

  3. JavaScript基础知识(二)

    一.JavaScript事件详解 1.事件流:描述的是在页面中结束事件的顺序 事件传递有两种方式:冒泡与捕获. 事件传递定义了元素事件触发的顺序. 如果你将 <p> 元素插入到 <d ...

  4. 林大妈的JavaScript基础知识(二):编写JavaScript代码前的一些简单工作

    在介绍JavaScript语法前,我们需要知道,学习语法必须要多利用手敲代码来巩固记忆.因此,由于JavaScript的特性,它不能像C++和Java一样独立地编译及运行,我们需要在调试运行JavaS ...

  5. javaScript 基础知识汇总(三)

    1.循环:while 和 for while 循环 while(condition){ //代码 循环体 } do ... while  循环 let i =0; do { //循环体 }while( ...

  6. javaScript 基础知识汇总 (十)

    1.New Function 语法:let func = new Function ([arg1[, arg2[, ...argN]],] functionBody) //无参数示例: let say ...

  7. javaScript 基础知识汇总(六)

    1.基本类型与对象的区别 基本类型:是原始类型的中的一种值. 在JavaScript中有6中基本类型:string number  boolean  symbol  null  undefined 对 ...

  8. javaScript 基础知识汇总(五)

    1.垃圾回收 JavaScript 的内存管理是自动的,不能强制执行或者阻止执行 可达性 JavaScript中主要的内存管理概念是可达性. 什么是可达性? 定义一个对象 let user = { n ...

  9. javaScript 基础知识汇总(四)

    1.对象 概念:对象可以通过花括号{...} 和其中包含一些可选的属性来创建. 属性时一个键值对,键是一个字符串,值可以是任何类型. 对象的创建 let user = new Object(); // ...

随机推荐

  1. Python基础总结之第五天开始【认识简单的条件语句,也可以叫判断语句】(新手可相互督促)

    周五更新很累... 坚持,年薪20万又进了一步~~ python中的条件语句以[ if ]开头,条件语句成立时,运行该代码块,如果条件不成立,则跳过该代码块,执行后面的代码块. 简单的小示例: 输入性 ...

  2. AMD CPU环境下使用android studio,eclipse的Genymotion插件

    1.下载安装VirtualBox Genymotion的运行需要此环境(链接) 2.下载安装android模拟器Genymotion 由于官网的下载速度过慢,建议直接百度下载Genymotion(链接 ...

  3. Spring Boot 面试的十个问题

    用下面这些常见的面试问题为下一次 Spring Boot 面试做准备. 在本文中,我们将讨论 Spring boot 中最常见的10个面试问题.现在,在就业市场上,这些问题有点棘手,而且趋势日益严重. ...

  4. Linux基础之定时任务

    30.1)什么是定时任务 定时任务命令是cond,crond就是计划任务,类似于我们平时生活中的闹钟,定点执行. 30.2)为什么要用crond 计划任务主要是做一些周期性的任务,比如凌晨3点定时备份 ...

  5. 单调栈&单调队列

    最近打了三场比赛疯狂碰到单调栈和单调队列的题目,第一,二两场每场各一个单调栈,第三场就碰到单调队列了.于是乎就查各种博客,找单调栈,单调队列的模板题去做,搞着搞着发现其实这两个其实是一回事,只不过利用 ...

  6. let和const解构赋值

    1.let和const:最基础也很容易理解的,let是 声明一个变量,const是声明一个常量. 具体细节看如下实例代码 { let a=; console.log(a) } // console.l ...

  7. Kafka服务不可用(宕机)问题踩坑记

    背景 某线上日志收集服务报警,打开域名报502错误码. 收集服务由2台netty HA服务器组成,netty服务器将客户端投递来的protobuf日志解析并发送到kafka,打开其中一个应用的日志,发 ...

  8. 9.源码分析---SOFARPC是如何实现故障剔除的?

    SOFARPC源码解析系列: 1. 源码分析---SOFARPC可扩展的机制SPI 2. 源码分析---SOFARPC客户端服务引用 3. 源码分析---SOFARPC客户端服务调用 4. 源码分析- ...

  9. CSS3: perspective 3D属性

    本文引自:http://blog.csdn.net/cddcj/article/details/52956540 perspective 属性指定了观察者与z=0平面的距离,使具有三维位置变换的元素产 ...

  10. Docker 核心技术

    docker是什么?为什么会出现? 容器虚拟化技术:轻量级的虚拟机(但不是虚拟机) 开发:提交代码 ——> 运维:部署 在这中间,因为环境和配置,出现问题 ——> 把代码/配置/系统/数据 ...