深究js(四)——表达式

2024-03-15 16:48
文章标签 js 表达式 深究

本文主要是介绍深究js(四)——表达式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    表达式是JavaScript中的一个短语,JavaScript解释器会将其计算出一个结果。表达式中分为原始表达式和复杂表达式,原始表达式是表达式中最简单的表达式,而复杂表达式是通过操作符来连接多个原始表达式。下面将详细讲解比较常见的几个表达式。


一、原始表达式

    JavaScript的表达式中最简单的是原始表达式。原始表达式是表达式的最小单位,即不再包含其他表达式。在JavaScript中,原始表达式包含常量或直接量、关键字和变量。常见的直接量如数值和字符串,常见的关键字如true、false、null和this等等。


二、对象和数组的初始化表达式

    对象和数组的初始化表达式有时称做“对象直接量”和“数组直接量”,实际上是一个新创建的对象和数组。但是他们不像上面的直接量,他们不是原始表达式,因为它们所包含的成员或者元素都是子表达式。数组初始化表达式是通过一对方括号和其内由逗号隔开的列表构成的,初始化的结果是创建一个新的数组。数组的元素是逗号分隔的表达式的值。简单的如:

[]
[1, 2]
    数组也可以嵌套,如:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    在数组里面,数组直接量中的列表逗号之间的元素可以省略,省略的空位的默认值是underfined,如:

[1,,,5]
    数组直接量的元素列表结尾处可以留下单个逗号,这个时候不会创建一个新元素。对象的初始化表达式和数组的类似,只是由方括号改为花括号,并且每个子表达式都包含一个属性名和一个冒号作为前缀,冒号后面跟着值。如:

var a = {x : 'a',
    y : 'b'
}
    对象也可以嵌套,如:

var a = {a : {x : 1,
        y : 2
    },
    b : {x : 1,
        y : 2
    }
}
    对象里面的属性名可以是字符串,如:

var a = {'a' : {x : 1,
        y : 2
    },
    'b' : {x : 1,
        y : 2
    }
}

三、函数定义表达式

    函数定义表达式定义一个JavaScript函数,表达式的值是这个新定义的函数,从某种意义上讲,函数定义表达式可称为“函数直接量”。典型的函数定义表达式包含关键字function,后面有一个括号,括号内可填入多个参数名,然后由一对花括号来包裹着代码块,如:

function foo(a) {return a
}

四、属性访问表达式

    属性访问表达式得到的是一个对象属性或者数组元素的值,在JavaScript中,属性访问有两种方法,一种是用“.”,另一种是用“[]”,如:

var a = {x : 'a',
    y : 'b'
}
alert(a.x)
alert(a['x'])
    第一种方法需要知道该对象里面的某个属性的名称,第二种方法需要知道该对象里面某个属性的名称或者数组元素的索引。这两个方法看似相同,其实有用法上的不同。第一种方法只能用于对象里面的属性的名称要合法,即不能和保留字重名,属性名也不能包含空格和其他标点符号,而第二种方法可以适用这种情况下。当属性名是通过运算得出的值而不是固定值的时候,也是只能用第二种方法。

    无论使用哪种方式,在“.”和“[]”之前的表达式都先进行计算,如果结果是null或者underfined,则会抛出一个类型异常的错误;如果不是对象,则将其转换成对象。如果对象表达式后跟随着句点和标识符,则会查找由这个标识符所指定的属性值并返回;如果是跟随一对方括号,则将方括号内的值转换为字符串。但是无论哪种情况,如果命名属性不存在,则会返回underfined。


五、对象创建表达式

    对象创建表达式创建一个对象并调用一个构造函数初始化新对象的属性,这个方法和函数调用表达式相似,只不过多了个new。如:var a = new Object()。当这个表达式里不需要传人任何参数给构造函数的话,可以省略掉括号。如:var a = new Object


六、其他表达式

    除了上述的这几个表达式外,还有算术表达式、关系表达式、逻辑表达式和赋值表达式等等。算术表达式里的运算符基本上用到算术运算符,通过这些运算符来对操作数进行算术操作。

    关系表达式通过“<”、“>”和“=”等运算符用来测试两个操作数之间的关系,根据关系是否存在而返回真或假。

    逻辑表达式通过逻辑运算符(||、&&、!之类的)对操作数进行布尔算术运算,通常与关系表达式一起用,组成一个比较复杂的表达式。

    赋值表达式是通过等于号来给变量或者属性赋值。我会在后面一章详细的讲有关的运算符,在这里先做个铺垫。

这篇关于深究js(四)——表达式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/812618

相关文章

Java Lambda表达式的使用详解

《JavaLambda表达式的使用详解》:本文主要介绍JavaLambda表达式的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言二、Lambda表达式概述1. 什么是Lambda表达式?三、Lambda表达式的语法规则1. 无参数的Lambda表

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

SpringBoot @Scheduled Cron表达式使用方式

《SpringBoot@ScheduledCron表达式使用方式》:本文主要介绍SpringBoot@ScheduledCron表达式使用方式,具有很好的参考价值,希望对大家有所帮助,如有... 目录Cron 表达式详解1. 表达式格式‌2. 特殊字符解析3. 常用示例‌4. 重点规则5. 动态与复杂场景‌