前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单了解JavaScript运算符与优先级

简单了解JavaScript运算符与优先级

作者头像
wade
发布2020-04-23 16:30:08
3580
发布2020-04-23 16:30:08
举报
文章被收录于专栏:coding个人笔记

之前分享了数据类型的转换和比较的时候的隐式转换,其实JavaScript还有非常多的运算符,常见的有算术、赋值、逗号、条件、比较等运算符或者是操作符,不常用的有delete、await、in等。

++、--:递增递减,在前面先自加再赋值,在后面先赋值再自加,都是转成number,不能转成number的都是NaN。

+、-(单个的一元运算+a):表示正负的运算,先转成number再转换。

+、-、*、/、%:加减乘除和求模()也叫求余,都是转成number再计算,除了字符串拼接。

Delete:用的不多,用来删除对象属性或者是数组元素,删除成功返回true,失败返回false。并不是所有属性都可删除,var声明的变量和function语句定义的函数也不能删除。

Void:void作用于任何表达式都会被执行,且都是返回undefined。作用就是通过采用void 0取undefined比采用字面上的undefined更靠谱更安全,因为我们是可以直接定义var undefined = 1,所以应该优先采用void 0这种方式。填充<a>的href和<image>的src可以确保不会跳转和发送请求。

Typeof和instanceof:这两个运算符之前分享过。

==、!=、===、!==:之前也分享过了,涉及了很多隐式转换。

&&、||:逻辑与逻辑非,都是短路运算符,只要一个不符合,后面的也不会继续执行。

>、<、>=、<=:也是比较用的,跟==一样的规则。

In:判断是否有属性或者数组元素下标

代码语言:javascript
复制
var obj = {a: 1};
console.log('a' in obj);//true
console.log('b' in obj);//false
var arr = [1];
console.log(0 in arr);//true
console.log(1 in arr);//false

!:逻辑非,所有的都会返回一个布尔值,把操作的数转成布尔值再求反,之前说过,js中的假值只有false、null、undefined、空字符、0和NaN,其它值转为布尔型都为true。

~ 按位非、& 按位与、| 按位或、^ 按位异或、<< 左移、>> 有符号的右移、>>> 无符号的右移这几个操作符,按照数学的方法去计算,如果是数学渣渣的话......

三目运算符、赋值运算符、逗号运算符:这三个也都不用说什么,就是逗号除了用于声明多个变量,还能用来赋值,从左到右取最后一个。

代码语言:javascript
复制
var a = (1, 2, 3);console.log(a);//3

这边其实只是把MDN上面表达式和运算符这边提取了一些基础常见的,还有很多表达式这边没有,里面还给了运算符的优先级,可以看看:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

其实大概常用的优先级我们都知道,前面几个还是觉得慢慢的去记忆会好一点,因为还是很重要的。不过代码阅读性是非常重要的,千万不要搞七搞八,最后分享一个网上看见的题,随便看看:

代码语言:javascript
复制
function Foo() {
  getName = function () {
    console.log('1');
  };
  return this;
}
Foo.getName = function () {
  console.log('2');
};
Foo.prototype.getName = function () {
  console.log('3');
};
var getName = function () {
  console.log('4');
};
function getName() {
  console.log(5);
}
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();

(完)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 coding个人笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档