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 相关文章推荐
JQuery最佳实践之精妙的自定义事件
Aug 11 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
Mar 03 Javascript
js对象与打印对象分析比较
Apr 23 Javascript
ajax与302响应代码测试
Oct 23 Javascript
js获取当前页面路径示例讲解
Jan 08 Javascript
jQuery的选择器中的通配符使用介绍
Mar 20 Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
jquery简单的弹出层浮动层代码
Apr 27 Javascript
JS验证input输入框(字母,数字,符号,中文)
Mar 23 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
详解如何运行vue项目
Apr 15 Javascript
Ant Design Pro 下实现文件下载的实现代码
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
微博短链接算法php版本实现代码
2012/09/15 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
js导出txt示例代码
2014/01/14 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
pandas数值计算与排序方法
2018/04/12 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
纽约手袋品牌:KARA
2018/03/18 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
先进集体获奖感言
2014/02/13 职场文书
委托书范文
2014/04/02 职场文书
商铺门前三包责任书
2014/07/25 职场文书
大学生暑期实践报告
2015/07/13 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
python实现进度条的多种实现
2021/04/29 Python
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python