作用域理解:定义的变量、函数生效的范围。javascript 有全局作用域和函数作用域两种。

注:es6实现let 块级作用域不是js原生的,底层同样是通过var实现的。如果想了解具体细节,请访问babel官方 对es6中let 进行解析。

执行上下文

范围:一段内或者一个函数内;

全局:函数声明、变量声明 。范围:;

函数:函数声明、变量声明、this、arguments。范围:一个函数内部;

函数、变量声明提升

foo(); //打印a

var foo = 1;

function foo (){

console.log(’a‘)

};

console.log(foo); //1

//实际的执行顺序为

function foo(){ //函数声明优先于变量的声明

console.log("a");

}

//var a ; 重复声明,这儿被省略了。

foo(); //打印a

foo = 1; //给foo赋值为1

console.log(foo); //1

当js引擎执行一个 执行上下文代码块时,执行顺序为:

1.函数声明 function a(){};(函数优先) 注:let a = function (){}; 这是变量的声明和赋值,不是函数的声明。

2.变量声明 var a; 注:刚开始只对变量进行声明,没有进行赋值,如果 在赋值之前使用到这个变量 值为:undefined。

3.执行上下文为函数作用域时:确定this和arguments。

4.按照js单线程和异步策略依次执行 作用域中的代码。

我们习惯将 var a = 2; 看作一个声明,而实际上 JavaScript 引擎并不这么认为。它将 var a和 a = 2 当作两个单独的声明,第一个是编译阶段的任务,而第二个则是执行阶段的任务。这意味着无论作用域中的声明出现在什么地方,都将在代码本身被执行前首先进行处理。可以将这个过程形象地想象成所有的声明(变量和函数)都会被“移动”到各自作用域的最顶端,这个过程被称为提升。要注意避免重复声明,特别是当普通的 var 声明和函数声明混合在一起的时候,否则会引起很多危险的问题!

作用域链

自由变量:当前作用域没有定义的变量,但是上层作用域定义了,可以在此层作用域中使用的变量。

作用域链:当使用一个变量时候,先在自己的作用域里找,如果没有找到,再到父级作用域找,一直找到全局作用域,如果都没有找到即报错。

块级作用域

js无块级作用域,仅有全局作用域和函数作用域两种作用域。

ES6 通过对全局作用域的特殊实现,实现了js的块级作用域 let;

let 的生效范围为 { };

const 为定义常量。注:定义的常量的值存储的内存地址不可变动,值是可变的比如常量中定义的是数组 或者对象时候,可以通过数组或对象方法操作原数据,只要不重新赋值就没问题。

php js函数作用域,javascript 作用域详解相关推荐

  1. js函数声明与赋值详解

    直接声明函数 a(); function a(){alert('...'); }//函数的声明会优先读取,无论函数的执行语句放在声明前面还是后面都会正常执行 表达式方法定义函数 var a = fun ...

  2. JavaScript闭包详解及案例

    JavaScript闭包详解及案例 一. 变量作用域 函数内部可以使用全局变量 函数外部不可以使用局部变量 当函数执行完毕时,本作用域内的局部变量会被销毁 二. 闭包 闭包:有权访问另一个函数作用域中 ...

  3. JavaScript事件详解-jQuery的事件实现(三)

    正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...

  4. js购物车功能php,使用JS实现购物车功能步骤详解

    这次给大家带来使用JS实现购物车功能步骤详解,使用JS实现购物车功能的注意事项有哪些,下面就是实战案例,一起来看一下. 我们肯定都很熟悉商品购物车这一功能,每当我们在某宝某东上购买商品的时候,看中了哪 ...

  5. JavaScript原型详解(通俗易懂)

    JavaScript原型详解 1,前言 下面是2008年Github创建以来,各种编程语言的排名情况 其中JavaScript自2013年之后就盘踞第一名,成为github上被使用最多的语言,早期,J ...

  6. JavaScript对象详解

    转载请注明预见才能遇见的博客:https://my.csdn.net/ 原文地址:https://blog.csdn.net/weixin_42787326/article/details/81297 ...

  7. 站长在线Python教程精讲:在Python函数中的局部变量详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中的局部变量详解>.本文的主要内容有:变量的作用域的概念.局部变量的概念.局部变量的举例. 目录 1.变量 ...

  8. JS 中 valueOf() 方法的详解

    JS 中 valueOf() 方法的详解 JavaScript 中的 valueOf() 方法用于返回指定对象的原始值,若对象没有原始值,则将返回对象本身.通常由JavaScript内部调用,而不是在 ...

  9. JS es6的Class类详解

    文章目录 JS es6的Class类详解 class基本语法 Class的基本语法之constructor Class的基本语法之类的调用方式 Class的基本语法之getter和setter Cla ...

  10. php。defined,PHP defined()函数的使用图文详解

    PHP defined()函数的使用图文详解 PHP defined() 函数 例子 定义和用法 defined() 函数检查某常量是否存在. 若常量存在,则返回 true,否则返回 false. 语 ...

最新文章

  1. 【Python】【入门】一文带你掌握Python27入门 ~
  2. 全球及中国生物识别车辆访问技术行业十四五应用现状及未来展望规划报告2022-2027年
  3. OpenCV-Python图像拼接方法
  4. 【Python】过滤数组中的空值(空字符串''和None)
  5. [渝粤教育] 西南科技大学 土木工程施工 在线考试复习资料(1)
  6. 前端开发JS的学习之AngularJS库
  7. html输入字符长度佛下一句,js如何判断输入字符串长度
  8. Codeforces-Div312
  9. Mysql访问中间件--Atlas初探
  10. Oracle数据库中的数据类型
  11. BT.656标准简介
  12. HTML+CSS大作业——水果介绍-橙子之家(6页) HTML+CSS+JavaScript 学生dreamweaver网页设计作业成品
  13. Linear-gradient()
  14. Android页面的跳转
  15. windows10下VM安装安卓虚拟机PhoenixOS
  16. VS2013 如何创建应用程序图标
  17. 十二月,我们一起在云台山风景区赏雪
  18. 助力课堂智能点名 | 爱莫AI场景化应用(四)
  19. android 地图定位失败,Android 高德地图定位遇到的异常
  20. L1-7 天梯赛的善良 (20 分)

热门文章

  1. iPhone数据恢复工具
  2. 系统架构设计笔记(16)——局域网与广域网
  3. 二.Laravel5.6教程之——Laravel Debugbar扩展
  4. python入门指南小说免费阅读-python3.6.0入门指南(官方版).pdf
  5. Linux中的Libreoffice中添加字体
  6. 以下不属于java基本数据类型的是_【单选题】在 Java 中,以下()不属于 Java 基本数据类型。 A. int B. boolean C. String D. double...
  7. 告别排队长龙,3D门禁刷脸进闸甭提多方便!
  8. 解决vs2005“无法附加,绑定句柄无效”问题
  9. h5微信本地调试 vue_Vue开发Html5微信公众号的步骤
  10. vue-quill-editor上传图片到服务器