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 相关文章推荐
javascript 用原型继承来实现对象系统
Mar 22 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
Aug 26 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
Sep 27 Javascript
js调试工具Console命令详解
Oct 21 Javascript
jquery+ajax请求且带返回值的代码
Aug 12 Javascript
手机端转盘抽奖代码分享
Sep 10 Javascript
使用jQuery给input标签设置默认值
Jun 20 Javascript
JS简单实现移动端日历功能示例
Dec 28 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
Jun 20 Javascript
vue的mixins属性详解
Mar 14 Javascript
animate.css在vue项目中的使用教程
Aug 05 Javascript
JavaScript实现轮播图效果代码实例
Sep 28 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函数实现分页含文本分页和数字分页
2014/10/23 PHP
10条php编程小技巧
2015/07/07 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
Python3实现并发检验代理池地址的方法
2016/09/18 Python
python如何对实例属性进行类型检查
2018/03/20 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
pandas DataFrame运算的实现
2020/06/14 Python
python实现二分查找算法
2020/09/18 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
工作会议欢迎词
2014/01/16 职场文书
优秀员工表扬信
2014/01/17 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python
TS 类型收窄教程示例详解
2022/09/23 Javascript