一、什么是表达式?

我理解的“表达式”:程序执行到1个“表达式”时,会返回1个值到这个“表达式”所在的位置。

var a = 10 , b = 20;  // 这是初始化变量

console.log(a+b); // 计算变量a、b的值(标识符解析),然后返回两者的值到其所在位置。那么就相当于console.log(10+20)

二、常见的几种表达式

(一)原始表达式

1.直接量(字面量)

123 // 数字
'hola' // 字符串

2.JavaScript的保留字

“保留字”就是在程序中有特殊意义的标识符,程序员不能使用它们作为变量了。

true; // 布尔值
this; // 函数的调用上下文

3.变量

var a = 10; alert(a); // 计算变量a的值,返回1个10,然后将10传入alert函数。

(二)数组表达式、对象表达式

数组表达式就是1个新创建的数组。

[1,2,3,4]; // 创建1个数组。

和数组表达式一样,对象表达式就是新建1个对象。

{x:1, y:2}; // 创建1个对象

(三)函数表达式

创建1个函数,可以采用函数声明的方式,也可以采用函数表达式的方式。函数表达式就是创建1个函数,将它的引用保存在1个变量中。

var foo = function(a){ return '传进来的实参是:' + a; }; // 创建1个匿名的函数,它的引用保存在变量foo中。

(四)属性访问表达式

属性访问表达式有2种语法:

1.“表达式.标示符”: “表达式”需要是1个对象,而“标示符”必须是对象已经存在的属性

var obj = {x:1, y:2}; console.log(obj.x); // obj.x返回obj对象中的x属性,1。

2.“表达式[表达式]”:第1个“表达式”同样需要是1个对象,而第2个“表达式”的值可以为:

(1)字符串:那么这就是对象的属性访问or属性设置。

对象的属性访问:

var obj = {x:1, y:2};  console.log(obj['x']); // 访问obj对象中x属性的值,返回1。

对象的属性设置(给1个属性赋值):

var obj = {x:1, y:2}; obj['z'] = 3; console.log(obj); // { x=1,  y=2,  z=3}

(2)数字:数组元素访问。

var arr = [1,2,3,4]; console.log(arr[0]); // 访问数组中索引为0的元素,返回1。

(五)函数调用表达式

函数调用表达式就是这样的:“函数名(实参)”。函数调用表达式的返回值,取决于return语句。

1没写return语句:函数调用返回undefined。

    function add(x){
x+x;
}
console.log( add(1) ); // 函数没有return语句,函数调用返回undefined。

2.写了return语句,但没写返回值:函数调用返回undefined。

    function add(x){
x+x;
return;
}
console.log( add(1) ); // 写了return语句但没有返回值,函数调用返回undefined。

3.写了return语句和要返回的表达式:返回表达式的值。

    function add(x){
return x+x;
}
console.log( add(1) ); // 写了return语句,指定了返回值(x+x),所以函数调用返回2。

参考资料:

《JavaScript权威指南》(第6版) 4.1-4.6

js基础知识:表达式的更多相关文章

  1. JS基础知识笔记

    2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...

  2. [JS复习] JS 基础知识

    项目结尾,空闲时间,又把<JS 基础知识> 这本书过了一遍,温故知新后,很多知其然不知其所以然的内容 豁然开朗. [1. 用于范围的标签] display  :inline or bloc ...

  3. HTML+CSS+JS基础知识

    HTML+CSS+JS基础知识 目录 对HTML+CSS+JS的理解 基础知识 对HTML+CSS+JS的理解 基础知识 插入样式表的三种方式 外部样式表:<link rel="sty ...

  4. Node.js基础知识

    Node.js入门   Node.js     Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设在POSIX环境下运行 ...

  5. 网站开发进阶(十五)JS基础知识充电站

    JS基础知识充电站 1.javascript alert弹出对话框时确定和取消两个按钮返回值? 用的不是alert对话框,是confirm confirm(str); 参数str:你要说的话或问题: ...

  6. NodeJs>------->>第三章:Node.js基础知识

    第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info  方法 console.log(" node app1.js 1> ...

  7. js基础知识温习:Javascript中如何模拟私有方法

    本文涉及的主题虽然很基础,在很多人眼里属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题.这里会涉及到对象属性的封装.原型.构造函数.闭包以及立即执行表达式等知识. 公有方法 公有方法 ...

  8. js基础知识--BOM

    之前说过,在js的 运行环境为浏览器时,js就主要有三部分组成: ECMAScript核心语法.BOM.DOM.今天就和大家详细说一下BOM的一些基础知识. BOM BOM通常被称为浏览器对象模型,主 ...

  9. JS基础知识总结

      js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划() ...

  10. js基础知识总结(2016.11.1)

    js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划():避 ...

随机推荐

  1. 纯JS实现中国行政区域上下联动选择地址

    一.实现目的: 如标题所述,通过JS来实现地址的选取,上一篇博客介绍的方式是通过java读取txt资源文件来实现地址的选择,通过ajax方式访问服务器实现省市区联动.此篇中将介绍如何使用JS实现相同功 ...

  2. myeclipse部署web项目到server : deploy location 为 INVALID,并且不能更改

    首先查看项目路径下有没有 .mymetadata文件,没有就从其它地方挪一个,但是文件中的id必须是唯一的. 如果还不行就去下面这位大哥写的博客看下,进行下一步就可以解决了 生如夏花

  3. uva 11082

    题意:知道矩阵的前i行之和,和前j列之和(任意i和j都可以).求这个矩阵.每个格子中的元素必须在1~20之间.矩阵大小上限20*20 #include<cstdio> #include&l ...

  4. ios label上显示特殊字符 % "

    今天在label上显示一个拼接的百分比 label.text = [NSString stringWithFormater:@"%d%",i]; 结果后面的%就是报错,然后查半天也 ...

  5. APP如何实现推送功能

    一.推送功能的集成 (1)在Umeng开发者中心,申请新应用,开通推送功能.此时需要上传开发推送证书和生产推送证书的p12文件. 申请证书的流程如下: >>1 创建开发推送证书 >& ...

  6. JS之模块模式应用

    之前做过一些简单的单页面应用项目,是对模块模式很好的应用,我决定动手做一个简单的Demo出来. 基本思想是设计一个加载器,当用户点击菜单时,获取不同选项的按钮id,根据不同id实现对页面内容的替换. ...

  7. LSD-SLAM深入学习(1)-基本介绍与ros下的安装

    前言 借鉴来自RGB-D数据处理的两种方法-基于特征与基于整体的,同样可以考虑整个图片的匹配,而不是只考虑特征点的…… 一般这种稠密的方法需要很大的计算量,DTAM: Dense tracking a ...

  8. PHP的字符串函数

      1.字符串的连接 字符串可以使用字符串连接符(.)来连接 常见的用途是建立大块的HTML字串代码,赋值号 (=) 连接符 (.) 可以被简写合并为 (.=) 符号 2.在字符串中使用变量 这个功能 ...

  9. js代码学习

    运算符: 复杂运算符:Math.pow(2,53)   //=>9007192145641435:2的53次幂 Math.round(.6)  //=>1.0:四舍五入 Math.ceil ...

  10. 文件上传——servlet实现

    自己对照别的博主的博客实现的,记录用. 整个上传的结构如下: 上传的页面:unload.jsp <%@ page language="java" import="j ...