美文网首页
为什么 var 语句返回值为undefined

为什么 var 语句返回值为undefined

作者: 慢步独行 | 来源:发表于2019-10-29 00:07 被阅读0次

javascript语句运行控制器

我们在浏览器的控制台输入 abd = 2 时会打印 2,但是输入 var abd = 2 得到的结果却是 undefined,这是什么原因呢?

语句

普通语句

  1. 声明类

    var 声明语句

    const 声明语句

    let 声明语句

    函数声明语句

    class 声明语句

  2. 表达式语句,比如 abc = 3

  3. 空语句

  4. debugger语句

语句块

js中带有括号的都是一个语句块,包含小括号和大括号

Completion Record

一般编程语言都有一个规律:用一定的文法和词法,表达一定的语义,去操作运行时

Completion Record就是js运行时的一种基础类型,它表示语句的执行结果,它有三个属性:

1、[ [ type ] ] : 表示完成类型,有break、continue、return、throw和normal几种

2、[ [ value ] ] : 表示返回的值,如果语句没有返回值,那就为empty

3、[ [ target ] ] : 表示语句的目标值,及语句前面加的标签

不同的语句在执行的过程中,completion值不同,而它的值决定了语句的执行逻辑

普通语句执行后会得到 [[type]]值为normal的 Completion Record,所以普通语句执行完成之后就继续执行下一条

而只有表示式语句才会有 [[value]]值,不过这个[[value]]对于引擎执行逻辑来说没有什么用处

结合上面两点,也就不难解释,var语句的返回值为什么是undefined:

var语句执行得到的是一个[[vaue]]值为空的Completion Record.

相关文章

  • 为什么 var 语句返回值为undefined

    javascript语句运行控制器 我们在浏览器的控制台输入 abd = 2 时会打印 2,但是输入 var ab...

  • 声明和赋值的返回值

    var a = 1; //声明变量永远返回undefined a.b = 2; //赋值语句永远返回值

  • null 和undefined

    var a = undefined; var a == null; 上面两种写法的效果等价; 在if语句中, nu...

  • js 语法和其他

    js语句 所有的js语句其实都会返回结果 在调试工具中执行 var a = 12 会返回undefined ,表示...

  • js随写

    赋值语句:var x = 1;使用;表示语句结束一下为两个语句:var x = 1; var y = 2;语句块:...

  • void方法

    void方法让返回值为undefined 常用viod()来初始化值为undefined,用来给a标签禁掉跳转

  • javascript中出现undefined的四种情况

    一,函数没有返回值,或者返回值为空,出现undefined 例: 1)function show(){ //没有返...

  • ES6部分总结

    var、let、const 比较 var 会有声明提升,并初始化为 undefined 疑问: 为什么打印 b 会...

  • 前端小知识<2>

    1、var、let 及 const 区别 var 存在提升,可以在声明之前使用 值为 undefined。let、...

  • 目录

    1th_JS~basic 记录1 var关键字的意义、undefined与null、对变量操作是否返回值、自增自减...

网友评论

      本文标题:为什么 var 语句返回值为undefined

      本文链接:https://www.haomeiwen.com/subject/jfoivctx.html