深究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

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

js react 笔记 2

起因, 目的: 记录一些 js, react, css 1. 生成一个随机的 uuid // 需要先安装 crypto 模块const { randomUUID } = require('crypto');const uuid = randomUUID();console.log(uuid); // 输出类似 '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'