JavaScript基础语法之js表达式


Posted in Javascript onJune 07, 2016

本文将详细介绍javascript表达式,表达式分为原始表达式和复杂表达式。一般,关于javascript基础语法,人们听得比较多的术语是操作符和语句。但,其实还有一个术语经常使用,却很少被提到,这就是javascript表达式(expression)。

原始表达式(primary exression)

原始表达式是表达式的最小单位——它不再包含其他表达式。javascript中的原始表达式包括this关键字、标识符引用、字面量引用、数组初始化、对象初始化和分组表达式

PrimaryExpression : 
this 
Identifier 
Literal 
ArrayLiteral 
ObjectLiteral 
( Expression )

this关键字和标识符

this;//返回当前对象

i;//返回变量i的值

sum;//返回变量sum的值

字面量

字面量(literal),又翻译成直接量,就是程序中直接使用的数据值

Literal ::
NullLiteral
BooleanLiteral
NumericLiteral
StringLiteral 
RegularExpressionLiteral 
null;
undefined;
true;
false;
1;
'abc';
/pattern/;

数组和对象初始化

数组初始化和对象初始化实际上是一个以字面量的方式描述的初始化的过程。这两个初始化表达式有时称做"对象直接量"和"数组直接量"

[];
[1,2,3];
{};
{a:1};

分组表达式

分组表达式实际上就是括号,用于重写运算符的优先级

复杂表达式(MemberExpression)

复杂表达式是由原始表达式和操作符(operator)组合而成,包括属性访问表达式、对象创建表达式和函数表达式

MemberExpression : 
MemberExpression [ Expression ] 
MemberExpression . IdentifierName 
new MemberExpression Arguments
FunctionExpression

属性访问表达式

属性访问表达式运算可以得到一个对象属性或一个数组元素的值,javascript为属性访问定义了两种语法

MemberExpression . IdentifierName 
MemberExpression [ Expression ]

第一种写法是一个表达式后跟随一个句点和标识符。表达式指定对象,标识符则指定需要访问的属性的名称

第二种写法是使用方括号,方括号内是另外一个表达式(这种方法适用于对象和数组)。第二个表达式指定要访问的属性的名称或代表要访问数组元素的索引

var o = {x:1,y:{z:3}}; //对象字面量
var a = [o,4,[5,6]]; // 包含对象的数组字面量
o.x;//表达式o的x属性
o.y.z;//表达式o.y的z属性
o['x'];//对象o的x属性
a[1];//表达式a中索引为1的元素

不管使用哪种形式的属性访问表达式,在'.'和'['之前的表达式总是会首先计算

如果计算结果是null或undefined,表达式会抛出一个类型错误异常,因为这两个值都不能包含任意属性

如果计算结果不是对象,javascript会将其转换为对象

如果对象表达式后跟随句点和标识符,则会查找由这个标识符指定的属性值,并将其作为整个表达式的值返回

如果对象表达式后跟随一对方括号,则会计算方括号内的表达式的值并将其转换为字符串

不论哪种情况,如果命名的属性不存在,那么整个属性访问表达式的值就是undefined

对象创建表达式

对象创建表达式创建一个对象并调用一个函数初始化新对象的属性

new Object();
new Point(2,3);

如果一个对象创建表达式不需要传入任何参数给构造函数的话,那么这对空圆括号是可以省略的

new Object;

函数表达式

函数表达式分为函数定义表达式和函数调用表达式

函数定义表达式定义一个javascript函数,表达式的值是这个新定义的函数

一个典型的函数定义表达式包含关键字function,跟随其后的是一对圆括号,括号内是一个以逗号分割的列表,列表含有0个或多个标识符(参数名),然后再跟随一个由花括号包裹的

javascript代码段(函数体)

function square(x){
return x*x;
}

函数定义表达式同样可以包含函数的名字,函数也可以通过函数语句来定义,而不是函数表达式

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

函数调用表达式是一种调用或执行函数或方法的语法表示。如果这个表达式是一个属性访问表达式,那么这个调用称做方法调用

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

以上所述是小编给大家介绍的JavaScript基础语法之js表达式的相关内容,希望对大家有所帮助。如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery prop的使用介绍及与attr的区别
Dec 19 Javascript
javascript控制台详解
Jun 25 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
Mar 23 Javascript
node.js实现微信JS-API封装接口的示例代码
Sep 06 Javascript
vue地区选择组件教程详解
May 04 Javascript
JavaScript实现图片懒加载的方法分析
Jul 05 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
Sep 14 Javascript
JQueryDOM之样式操作
Mar 27 jQuery
基于vue写一个全局Message组件的实现
Aug 15 Javascript
vue配置nprogress实现页面顶部进度条
Sep 21 Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 Javascript
手把手教你如何编译打包video.js
Dec 09 Javascript
JavaScript必看小技巧(必看)
Jun 07 #Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 #Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
Jun 07 #Javascript
javascript显示倒计时控制按钮的简单实现
Jun 07 #Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
Jun 07 #Javascript
jQuery原理系列-css选择器的简单实现
Jun 07 #Javascript
javascript实现抽奖程序的简单实例
Jun 07 #Javascript
You might like
用PHP制作静态网站的模板框架(二)
2006/10/09 PHP
?算你??的 PHP 程式大小
2006/12/06 PHP
ajax实现无刷新分页(php)
2010/07/18 PHP
学习php笔记 字符串处理
2010/10/19 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
php实现webservice实例
2014/11/06 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
(function(){})()的用法与优点
2007/03/11 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
vue实现购物车案例
2020/05/30 Javascript
Python自动登录126邮箱的方法
2015/07/10 Python
解决django FileFIELD的编码问题
2020/03/30 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
元旦文艺汇演主持词
2014/03/26 职场文书
人事任命书格式
2014/06/05 职场文书
党员一帮一活动总结
2014/07/08 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
校园广播稿精选
2014/10/01 职场文书
导师鉴定意见
2015/06/05 职场文书
解除合同协议书范本
2016/03/21 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技