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 相关文章推荐
创建一个复制UBB软件信息的链接或按钮的js代码
Jan 06 Javascript
js 目录列举函数
Nov 06 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
Dec 18 Javascript
面向对象的Javascript之一(初识Javascript)
Jan 20 Javascript
JavaScript中的变量作用域介绍
Dec 31 Javascript
node.js微信公众平台开发教程
Mar 04 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 Javascript
Angular2学习笔记——详解路由器模型(Router)
Dec 02 Javascript
如何解决hover在ie6中的兼容性问题
Dec 15 Javascript
JQuery和HTML5 Canvas实现弹幕效果
Jan 04 Javascript
C#微信小程序服务端获取用户解密信息实例代码
Mar 10 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Django URL传递参数的方法总结
2016/08/28 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
关于工资低的辞职信
2014/01/14 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
知识竞赛主持词
2014/03/26 职场文书
家长对学生的评语
2014/04/18 职场文书
工程服务质量承诺书
2015/04/29 职场文书
《开国大典》教学反思
2016/02/16 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
python通过新建环境安装tfx的问题
2022/05/20 Python