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控制显示隐藏兼容问题(IE6、IE7、IE8)
Apr 01 Javascript
JavaScript 的继承
Oct 01 Javascript
Javascript call和apply区别及使用方法
Nov 14 Javascript
js中自定义方法实现停留几秒sleep
Jul 11 Javascript
jQuery动态创建html元素的常用方法汇总
Sep 05 Javascript
原生javascript实现Tab选项卡切换功能
Jan 12 Javascript
js字符串操作总结(必看篇)
Nov 22 Javascript
Vuex简单入门
Apr 19 Javascript
React Native基础入门之调试React Native应用的一小步
Jul 02 Javascript
JavaScript中Array方法你该知道的正确打开方法
Sep 11 Javascript
vue里面使用mui的弹出日期选择插件实例
Sep 16 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
Nov 05 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
使用PHP维护文件系统
2006/10/09 PHP
PHP添加MySQL数据记录代码
2008/06/07 PHP
分享PHP header函数使用教程
2013/09/05 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
python获取网页状态码示例
2014/03/30 Python
Django中使用group_by的方法
2015/05/26 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
国际花店:Pickup Flowers
2020/04/10 全球购物
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
人力资源职位说明书
2014/07/29 职场文书
志愿者事迹材料
2014/12/26 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
建党伟业观后感
2015/06/01 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
python运算符之与用户交互
2022/04/13 Python
Python中的 No Module named ***问题及解决
2022/07/23 Python