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 相关文章推荐
表单内同名元素的控制
Nov 22 Javascript
用jQuery技术实现Tab页界面之二
Sep 21 Javascript
jQuery中使用了document和window哪些属性和方法小结
Sep 13 Javascript
JQuery页面的表格数据的增加与分页的实现
Dec 10 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
JavaScript获取浏览器信息的方法
Nov 20 Javascript
jQuery实现div拖拽效果实例分析
Feb 20 Javascript
confirm确认对话框的实现方法总结
Jun 17 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
Sep 01 Javascript
input输入密码变黑点密文的实现方法
Jan 09 Javascript
javascript 数组精简技巧小结
Feb 26 Javascript
浅谈TypeScript 索引签名的理解
Oct 16 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
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
用于table内容排序
2006/07/21 Javascript
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
微信跳一跳python代码实现
2018/01/05 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
Python内存读写操作示例
2018/07/18 Python
Python3中列表list合并的四种方法
2019/04/19 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
体育节口号
2014/06/19 职场文书
关于教师节的广播稿
2014/09/10 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS