JavaScript表达式与运算符详解

作者:小括号时间:2026-10-21 21:36:08浏览:400

本文系统讲解JavaScript中的表达式分类与各类运算符。内容涵盖原始表达式、复合表达式、初始化表达式、函数表达式及调用表达式等核心概念,并深入解析一元、二元、三元运算符,以及赋值、比较、算术、位运算、逻辑运算和字符串拼接。重点剖析delete、in、instanceof、typeof、new、this和void等特殊运算符的行为机制与注意事项,帮助开发者准确理解JS语法结构。

JavaScript表达式详解

一、JavaScript表达式

定义:表达式指任何能计算出值的程序单元。——维基百科

表达式是JavaScript中的一种短语,用于由解释器产生一个值。——《JavaScript权威指南》

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() 创建空对象亦合法。

JavaScript运算符分类与用法

二、JavaScript运算符(一般用于表达式间运算)。

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.运算符优先级,建议查阅以助于读懂复杂表达式。

以上就是本文全部内容,希望内容对大家的学习或工作有帮助,同时也希望多多支持本站!

作者最新文章