javascript表达式和运算符详解


Posted in Javascript onFebruary 07, 2017

一、js表达式

定义:表达式是指能计算出值得任何可用程序单元。  ——wiki

 表达式是js一种短语,可是js解释器用来产生一个值。  ——js《权威指南》

1.原始表达式。

常量/直接量: 3.14/ "test" 等

关键字: null,this,true,false 等

变量: i,k,j 等

复合表达式:原始表达式和原始表达式之间用运算符连接可以组成一个复合表达式。

例如: 10 * 20 这就是一个复合表达式

2.(数组、对象的)初始化表达式。

例如:

[1,2]  等价于  new Array(1,2);

[1,,,2]  等价于  new Array(1,undefined,undefined,2);

{x:1,y:2} 等价于  var obj = new Object();

obj.x = 1;obj.y = 2;

3.函数表达式。

var fn = function(){};

或者:

(function(){ console.log("hello") })();

如果你不理解函数表达式后面还会有对应的介绍。

4.属性访问表达式。

var obj = {x:1}

我们可以通过  obj.x 或者 obj["x"]来访问它的属性,这一类表达式就称之为属性访问表达式。

5.调用表达式。

func();  来调用一个函数,这样的表达式就称之为调用表达式。

6.对象创建表达式。

例如:

new Func(1,2);我们可以传参,如果没有参数我们也可以new Object;创建一个空的对象这样也是合法的。

二、js运算符(一般用于表达式之间进行一些运算)。

1.按照运算符的操作数的数量:

 一元运算符: +num

 二元运算符: a + b

 三元运算符: c?a:b

2.按照功能区分:

赋值:x += 1 (或者-=,=等)

比较:a == b

算数:a - b

位: a | b

逻辑: exp1 && exp2 (或与非)

字符串:“a” + “b”

特殊: delete obj.x

下面我们对特殊运算符展开来讲:

条件运算符:var c = true?1:2    //c=1

逗号运算符:var val = (1,2,3)  // val = 3  从左到右依次计算,取最后的

delete运算符:就是删除对象上的属性。

--例如:

var obj = {x:1}
obj.x //1

delete obj.x

obj.x //undefined

从IE9开始,我们可以给对象设置configurable标签,当configurable:true时属性才可以被delete掉

例:

var obj = {}
Object.defineProperty(obj, 'x', {
configurable:false,
value:1
});
delete obj.x
obj.x //1

3. in 运算符。

 例:window.x = 1;那我们想知道window到底有没有x呢,我们就可以用 in

  ”x“ in window;    // true 

4. instanceof  和 typeof 我们在上一章详细的介绍过,如果忘记了可以去看一下。

5. new运算符

 比如说我们创建一个函数构造器:function Foo(){}

 Foo.prototype.x = 1;

 我们可以用new运算符就可以创建一个对象obj

 var obj = new Foo();

 这样obj.x;  //1 我们就可以从它的构造器上的prototype属性上拿到 1

 我们可以通过 obj.hasOwnProperty("x"); //false 来判断这个属性到底是对象上的还是对象的原型上的

 obj._proto_拿到它的原型,obj._proto_.hasOwnProperty("x");  //true 说明是原型上的

6.this 运算符。

this; //window(浏览器)

var obj = {

func:function(){
  return this;
 }
 }
obj.func(); // obj

this运算符也是比较特殊的这个我们后面会详细讲。

7.void运算符。

 void 0 //undefined
 void (0) //undefined

 void无论后面的操作数是多少,返回的都是undefined。

8.运算符的优先级,也是建议大家去看一下,更有助于大家读懂复杂的表达式。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Js操作树节点自动折叠展开的几种方法
May 05 Javascript
Express.JS使用详解
Jul 17 Javascript
jquery简单倒计时实现方法
Dec 18 Javascript
Immutable 在 JavaScript 中的应用
May 02 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
canvas 实现中国象棋
Feb 17 Javascript
JavaScript运动框架 多物体任意值运动(三)
May 17 Javascript
JavaScript之生成器_动力节点Java学院整理
Jun 30 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 Javascript
详解javascript中var与ES6规范中let、const区别与用法
Jan 11 Javascript
vue配置多代理服务接口地址操作
Sep 08 Javascript
基于ajax实现上传图片代码示例解析
Dec 03 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
Feb 07 #Javascript
原生js和css实现图片轮播效果
Feb 07 #Javascript
bootstrap输入框组使用方法
Feb 07 #Javascript
angularjs使用directive实现分页组件的示例
Feb 07 #Javascript
Bootstrap下拉菜单样式
Feb 07 #Javascript
基于JavaScript实现购物车功能
Feb 07 #Javascript
js实现类bootstrap模态框动画
Feb 07 #Javascript
You might like
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
Python中正则表达式详解
2017/05/17 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
java程序员面试交流
2012/11/29 面试题
童装店创业计划书
2014/01/09 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
南极大冒险观后感
2015/06/05 职场文书
经典祝酒词大全
2015/08/12 职场文书
党员干部学习心得体会
2016/01/23 职场文书