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——表单应用范例
Feb 20 Javascript
JavaScript高级程序设计 扩展--关于动态原型
Nov 09 Javascript
深入探讨JavaScript String对象
Mar 09 Javascript
深入理解JavaScript中的箭头函数
Jul 28 Javascript
Javascript实现网络监测的方法
Jul 31 Javascript
Vue组件化开发思考
Feb 02 Javascript
基于Node.js实现压缩和解压缩的方法
Feb 13 Javascript
jQuery实现获取选中复选框的值实例详解
Jun 28 jQuery
JS中min函数实例讲解
Feb 18 Javascript
初试vue-cli使用HBuilderx打包app的坑
Jul 17 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
Mar 31 Javascript
JS严格模式原理与用法实例分析
Apr 27 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
用Socket发送电子邮件
2006/10/09 PHP
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
php中session与cookie的比较
2015/01/27 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
2014/09/01 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
Python中__init__.py文件的作用详解
2016/09/18 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
汽车检测与维修个人求职信
2013/09/24 职场文书
班组长岗位职责范本
2014/01/05 职场文书
创业融资计划书
2014/04/25 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
资产运营委托书范本
2014/10/16 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers