设为首页 加入收藏

TOP

你知道JavaScript中的结果值是什么吗?
2016-12-13 08:15:01 】 浏览:246
Tags:知道 JavaScript 结果 什么

你知道java script中的每条语句、甚至表达式都有一个结果值吗?


当你在浏览器中测试代码时,经常会在控制台的输出结果的最后面多出一条,大部分为undefined,这个undefined就是一个结果值。


先从ES7的一个提案说起吧:do表达式do{...}(注意:不是do{...}while();中的do


表达式do{...}的作用就是返回它后面的语句块的结果值,功能其实和return类似,只不过return需要通过函数来封装后调用。


不过目前来说,我们还无法使用上面的功能,目前的规范是不允许我们获得语句的结果值并将其赋值给一个变量的(除了使用eva l(),如var a = eva l('if (true) {b = c*3;}'),a的值被赋值为eva l()内的语句的结果值,不建议使用eva l())。


现在你应该大概理解了什么是结果值了,本人翻看了ES5规范,发现java script中,语句块、语句、甚至表达式都会隐式地返回一个结果值,总结如下:
结果值是语句、表达式经过逻辑运算后的值,若无逻辑(按顺序执行)则为最后一条子语句、表达式的结果值(语句可以包含子语句),简单地说它就是一个语句、表达式的“隐式的返回值”,java script会计算每一条语句、表达式并返回一个结果值,而对于语句块的结果值,它是最后一条最外层语句的结果值(非嵌套的子语句)。


部分浏览器会在控制台输出一段代码的最后一条语句或语句块的结果值(本文所有代码均使用Firefox测试,不同浏览器有差别)


结果值可以为任何表达式的值,也可以为空(;break;continue;),为空时结果值为undefined。当结果值为空时,浏览器会忽略该语句,而打印出上一条同级的非空的语句,若仅有自身一条同级语句则打印出undefined。


特例:var变量声明语句、函数声明语句的结果值为undefined。


例子:


; //undefined 单独的空语句
var d = 5; //undefined 所有的var声明语句的结果值均为undefined


foo(1); //3 函数执行语句的结果值为函数throw、return语句的结果值,若无throw、return语句,则为undefined
if(true){a=1;}else{b=2;} //1 按逻辑计算结果执行a=1;语句


下面来具体看看表达式的结果值有什么用:
大部分表达式只有结果值,没有副作用,如:var a = 2; var b = a + 3;,这里的表达式a+3的结果值为5,被赋值给了b。


而有副作用的表达式,如:


又如:


赋值语句的副作用是将'='右边的表达式的结果值赋值给了左边的变量,最终整个赋值语句的结果值为变量的值,为此我们可以这样:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇switch语句的妙用 下一篇Bootloader设计

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目