热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Javascript语句Javascript语法基础Javascript核心

源代码:https:github.comRobinQuPrograming-In-JavascriptblobmasterchaptersJavaScript_CoreJavaSc

源代码: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/Javascript_Core/Javascript_Basics/Expressions.md

原文: http://pij.robinqu.me/Javascript_Core/Javascript_Basics/Expressions.html

表达式

表达式是Javascript中的一个短语,解释器会将其计算出一个结果。程序中的常量是最简单的一类表达式。

将简单的表达式在组合成复杂的表达式最常用的方法就是使用运算符。运算符按照特定运算规则对操作数进行运算。

原始表达式

原始表达式包括常量,关键字和变量.

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

数组初始化表达式是通过一对方括号和其内由逗号隔开的列表构成的。例如

[]
[1+2,3+4]

也可以进行嵌套:

[[1,2,3],[4,5,6]];

也可以通过逗号省略某些元素:

[1,,,,5]

对象初始化跟数组初始化非常相似,只是方括号被花括号代替,并且每个字表达式都包含一个属性吗和一个冒号作为前缀:

var p = {x:2.3, y:-1.2}

函数定义表达式

var quare = function(x) { return x * x;}

属性访问表达式

o.x

调用表达式

f(0)
Math.max(x, y, z)
a.sort()

对象创建表达式

new Object()
new Point(2,3)

运算符概述

Javascript中有许多运算符用于算术表达式,比较表达式,逻辑表达式,赋值表达式。多数运算符都是由标点符号表示,比如”+”和”=”。另外一些运算符则是由关键字表示,比如delete和instanceof。

运算符可以根据其操作数的个人进行分类。多数的运算符为二元运算符 例如*。 同样也有一些一元运算符,例如,表达式-x中“-”运算符,条件判断运算符 ?: 是一个三元运算符。

一些运算符可以作用与任何数据类型,但是仍然希望它们的操作数是指定类型的数据,并且大多数运算符返回一个特定类型的值。通常会根据需要对操作数进行类型转换

左值是一个古老的属于,它是指 表达式只能出现在赋值运算符的左侧。在Javascript中,变量,对象属性和数组元素均是左值。ECMAScript规范允许内置函数返回一个左值,但自定义的函数则不能返回左值。

算术表达式

1 + 2
"hello" + " "
"1" + "2"

关系表达式

关系运算符用于测试两个值之间的关系,关系表达式总是返回一个布尔值,通常在if, while或者for语句中使用关系表达式,用以控制程序的执行流程。

== 和 ===运算符用于比较两个值是否相等,他们对相等的定义不尽相同。两个运算符允许任意类型的操作数,如果操作数相等则返回true,否则返回false。====也称为严格相等运算符,它用来检测两个操作数是否严格相等。== 运算符称做相等运算符,它用来检测两个操作数是否相等,这个相等的定义非常宽松,可以允许进行类型转换。由于 == ===的结合性都是从左到右,所以在执行==操作的时候,执行左侧的类型转换。 != !==运算符的检测规则是==和===运算符的求反。

比较运算符用来检测两个操作数的大小关系。例如 <> <= >=. 比较操作符的操作数可能是任意类型的,然而之后数字和字符串才是真正执行比较操作符,因为那些不是数字和字符串的操作数都将进行类型转换。

in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象。如果右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回true,例如:

var point = {x:1, y:1};
"x" in point

instanceof运算符希望左操作数是一个对象,右操作数标识对象的类。如果左侧的对象是右侧类的实例,则表达式返回true。例如:

var d = new Date();// 通过Date()构造函数来创建一个新对象
d instanceof Date;// 计算结构为true, d是由Date()创建的

逻辑表达式

逻辑运算符 && || !是对操作数进行布尔算术运算,经常和关系运算符一起使用

if(a === b && c == d ) {
// some code
}

赋值表达式

Javascript使用&#8221;=&#8221;运算符来给变量或者属性赋值 例如:

i = 0
o.x = 1

=运算符希望它的左操作数是一个左值, 右操作数可以使任意类型的任意值。

除了常规的赋值运算,Javascript还支持许多其他的赋值运算符,这些运算符将赋值运算符和其他运算符连接起来,提供了一种更为快捷的运算方式。例如:

total += sales_tax

等价于

total = total + sales_tax

表达式计算

和其他许多解释性语言一样,Javascript同样可以解释运行由Javascript源代码组成的字符串, 并产生一个值。Javascript通过管局函数eval()来完成这个工作:

eval("3+2") //=>5

其他运算符

条件运算符(?:)是Javascript中唯一的一个三元操作符:

x > 0 ? x : -x //求x的绝对值

typeof运算符是一元运算符,放在其单个操作数的前面,操作数可以使任意类型。返回值为表示操作数类型的一个字符串:

typeof最常用的用法是写在表达式中, 就像这样:

(typeof value == "string") ? "'" + value + "'" : value

delete是一元操作符, 它用来删除对象属性或者数组元素.

var o = {x:1, y:2}//定义一个对象
delete o.x //删除一个属性
"x" in o //=> false:这个属性在对象中不再存在

推荐阅读
  • PyTorch框架中有一个非常重要且好用的包:torchvision,该包主要由3个子包组成,分别是:torchvision.datasets、torchvision.models、torchv ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • 表达式树摘录(1)
    本文主要讲述ConstantExpression介绍表示具有常量值的表达式。ParameterExpression介绍表示命名的参数表达式。UnaryExpression介绍表示包 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
author-avatar
勿泊心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有