Skip to content

预解释 #2

@Yangxiaqing

Description

@Yangxiaqing

预解释

定义:

在当前的作用域中,JS代码执行之前,浏览器首先会默认的把所有带varfunction的进行提前的声明或者定义,这种行为就叫做预解释。
预解释是浏览器内置的一种机制。

理解申明和定义:

声明(declare):var num; --->告诉浏览器在全局作用域中有一个num变量
定义(defined):num=12 ---->给变量进行赋值。

对于带varfunction关键字的在预解释的时候操作还是不一样的。

  • var——在预解释的时候只是提前了声明
  • function——在预解释的时候声明+定义都完成了

预解释只发生在当前的作用域下,例如:开始只对window下的进行预解释,在函数执行的时候再对函数中的进行预解释。

JS中内存的分类:

  • 栈内存——用来提供一个供JS代码执行的环境--->作用域(全局作用域、私有的作用域)
  • 堆内存——用来存储引用数据类型的值--->对象存储的是属性名和属性值,函数存储的是代码字符串

例:

1、

console.log(num);//undefined
var num=12;
console.log(num);//12

如果一个变量只是申明没有赋值,默认的值为undefined.
2、

fn(1,2);//3
function fn(num1,num2){
    var sum=num1+num2;
    console.log(sum);
}

补充:

  • console.log(函数名);——把整个函数的定义部分(函数本身)在控制台输出
  • console.log(函数名());——把当前函数执行的返回结果输出
    return后面是什么,返回值就是什么,如果没有return,默认返回值undefined

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions