运算符

二.运算符

运算符也叫操作符,操作符是我们如何在变量和值时实施操作的方式,.是我们发起运算最简单的方式.

JavaScript 拥有如下类型的运算符。

  • 赋值运算符((Arithmetic operators)
  • 比较运算符((Comparison operators)
  • 算法运算符((Logical operators))
  • 位运算符(Bitwise operators)
  • 逻辑运算符(Logical operators)
  • 字符串运算符(String operators)
  • 条件(三元)运算符(Conditional operator)
  • 逗号运算符(Comma operator)
  • 一元运算符(Unary operators)
  • 关系运算符(Relational operator)

1赋值运算符

一个 赋值运算符(assignment operator) 将它右边操作数的值赋给它左边的操作数。最简单的赋值运算符是等于(=),它将右边的操作数值赋给左边的操作数。那么 x = y 就是将 y 的值赋给 x。

= 赋值

+= 加法赋值

-= 减法赋值

*= 乘法赋值

/= 除法赋值

%= 取余赋值

**= 求幂赋值

++

...

let num = 4; //将数字2的值赋值给变量a
num += 3;//  等价于 a = a + 3;
console.log(num) // 7 
let num_a = 2;
num_a **= 3; // 等价为 num_a = num_a * num_a *  num_a 即 num_a的3次方
console.log(num)// 8
解构

对于更复杂的赋值,解构赋值语法是一个能从数组或对象对应的数组结构或对象字面量里提取数据的 Javascript 表达式。

const foo = ['one','two','three'];
//不使用解构
let one = foo[0],
    tow = foo[1],
    three=  foo[2];
//使用解构赋值
let [one, two, three] = foo;

2.比较运算符

比较运算符]比较它的操作数并返回一个基于表达式是否为真的逻辑值,一般返回true 或false.

等于 == 如果两边操作数相等返回true
不等于 != 如果两边操作数不相等返回true
全等 === 两边操作数相等且类型相同,返回true
不全等 !== 两边操作数不相等且类型不相同,返回true
大于 > 左边操作数大于右边操作数返回true
大于等于 >= 左边的操作数大于或等于右边的操作数返回true
小于 左边的操作数小于右边返回true
小于等于 左边的操作数小于等于右边的操作数返回true
let a = 1,
    b = '1';
console.log(a === b)// 返回false  因为全等两边操作数类型不相同;
console.log(40 > 50) //fasle

3.算术运算符

算术运算符使用`作为操作数并返回一个数字,标准的算术运算符就是加减乘除;

+-*\ 取余数 % 括号()

除了这几种标准运算符 还有 自增 ++, 自减 --, 一元负值符,-,一元正值符,+,指数运算符 **;

consoel.log( 1 + 2) //3 两数之和
console.log( 1 - 4 )// - 3 两数之差
console.log( 1 * 2) // 2 两数之积
console.loh( 6 / 3 ) // 2 两数之商
console.log( 2 % 3 ) //2 两数之余
let a = 1;
a++; //等价为 a += 1;
console.log(a)// 2 
-a;// 等价于 a = -a 返回操作数的负值.
console.log(a);//-3

4.逻辑运算符

逻辑运算符常用于布尔(逻辑)值之间; 当操作数都是布尔值时,返回值也是布尔值。

且 或非

&& 逻辑与预算(且); &&用于布尔值时,当操作数都为true时返回true;否则返回false.

|| 逻辑或运算(或); ||用于布尔值时,当操作数有一个为true时返回true;如果两个操作数都是false返回false;

! 逻辑非元素 (非); 如果操作数能够转为true则返回false, 否则返回true;

console.log(true && true)// true
console.log(true || false)// true
console.log(!true)// false;
console.log(true || false && !true || false) // true

短路求值

作为逻辑表达式进行求值是从左到右,它们是为可能的“短路”的出现而使用以下规则进行测试:

false && angthing // 被短路求值为fasle;
true || anything // 被短路求值为 true
//anythin表示任意变量, anything部分不会被求值,所以这样做不会产生任何副作用。

5 .字符串运算符

除了比较操作符,它可以在字符串值中使用,连接操作符(+)连接两个字符串值相连接,返回另一个字符串,它是两个操作数串的结合。

console.log("my " + ' name ' + ' is ayu')//my  name  is ayu

简写操作符+= 也可以用来拼接字符串,例如:

let str = 'string';
str+='data';
console.log(str)// stringdata

6.条件(三元运算符)

条件操作符是JavaScript中唯一需要三个操作数的运算符.运算的结果根据给定条件在两个值中取一.语法为:

//条件 ?  值一 : 值二
let num = 4;
let yesOrNo = (num >= 10) ?  'yes' : 'no';
console.log(yesOrNo)// no
//当num大于等于 10 条件成立返回true时, 将'yes'赋值给yesOrNo, 否则赋值'no'

7.逗号操作符

逗号操作符 对它的每个操作数求值(从左到右),并返回最后一个操作数的值。

语法 expr1, expr2,expr3.... 参数任意表达式

描述:

当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符。这个操作符最常用的一种情况是:for 循环中提供多个参数。

let x = 1;
x = (x++, 5);
console.log(x)// 5
let a,b =43;
console.log(a)//undefined ;
console.log(b)// 43

8.一元操作符

一元操作符仅仅操作一个操作数.

delete

delete操作符, 删除一个对象或一个对象的属性或者一个数组中某一个的键值.语法如下

delete objectName;
delete objectName.property;
delete objectName[index];
delete property; // legal only within a with statement

objectName是一个对象名,property 是一个已经存在的属性,index是数组中的一个已经存在的键值的索引值。

你能使用 delete 删除各种各样的隐式声明, 但是被var声明的除外。

// 如果删除成功返回 true  属性或元素会变成undefined   删除失败 返回false
x = 42;
var y = 43;
myobj = new Number();
myobj.h = 4;    // 创建一个属性 h
delete x;       //返回true
delete y;       // 返回false  如果用var 声明则不能删除
delete Math.PI; // 返回false  不能删除预定义的方法
delete myobj.h; //返回 true   可以删除用户定义的属性吗
delete myobj;   // 返回 true 可以删除隐式声明的变量

删除数组的元素

删除数组中的元素时,数组的长度是不变的, 值变为undefined;

const arr = [43,5,4,546];
delete arr[0];
console.log(arr) //[empty, 5, 4, 546]
arr[0] = 1;
console.log(arr) //[1, 5, 4, 546]
//empty 表示空 数组下标0对应的数字变为空, 但下标依然存在
typeof

typeof操作符 可以通过下面两种方式使用.

typeof operand
typeof (operand)

typeof 操作符返回一个表示 operand 类型的字符串值。operand 可为字符串、变量、关键词或对象,其类型将被返回。operand 两侧的括号为可选。

let fn = function(){}
let str = 'data';
let num = 43;
let today = new Date();
console.log(typeof fn);//function
console.log(str);// string
console.log(num); //Number
console.log(today); // object
console.log(typeof true)// boolean
console.log(typeof null) // object; null
console.log(typeof undefined)//undefined
void
void (expression)
void expression

void运算符表示一个运算没有返回值.

例如如下创建了一个超链接的文本, 当用户点击文本时, 不会任何效果.

<a href="javascript:void(0)">Click here to do nothing</a>

9关系运算符

关系运算符对操作数进行比较, 根据比较结果真或假, 返回相应的布尔值.

in

in操作符,如果所指定的属性确实存在于所指定的对象中,则会返回true,语法如下:

propNameOrNumber in objectName

在这里 propNameOrNumber可以是一个代表着属性名的字符串或者是一个代表着数组索引的数值表达式,而objectName则是一个对象名。

let arr = new Array("data1","data2","data3");
let obj = {name:"ayu",age:78};
console.log(0 in arr)// return true;
console.log('data1' in arr) // return true
console.log('name' in obj)// true
console.log(name in obj) // false
instanceof

如果所判断的对象确实是所指定的类型, 则返回true , 语法如下:

objectName instanceof objectType

objectName 是需要做判别的对象的名称,而objectType是假定的对象的类型, 例如DateArray.

let date = new Date(2020, 5, 24);
console.log(date instanceof Date)//true
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350