1、作用域

    一般情况下,一段代码中所用到的名字并不总是有效可用的,
    而限定这个名字(变量)的可用性的代码范围就是这个名字的作用域,可用有效的减少变量名冲突
    2、js的作用域(es6)之前:全局作用域,局部作用域
    3、全局作用域:整个script标签 或者是单独的JS文件
    4、局部作用域(函数作用域),在函数内部就是局部作用域,这个变量名只能在函数内部使用
    5、变量作用域
    根据作用域的不同,变量分为全局变量,局部变量

注意

    如果在函数内部没有声明直接赋值的变量也叫全局变量
    函数的形参也是局部变量
    全局变量:只有浏览器关闭的时候才会销毁,比较占内存
    局部变量:当程序执行完毕就会销毁,比较节约内存
    6、现阶段JS没有块级作用域
    在es6中有块级作用域
    块级作用域 {} if{} for{}
    7、作用域链
    内部函数访问外部函数 采用的就是链试这种结果就是作用域链 (就近原则)

预解析

    先预解析 然后执行代码
    JS引擎会把var和function全部提到当前作用域的最前面然后按照代码的顺序从上往下执行
    预解析分为 变量预解析 和 函数预解析
    变量提升~~~~~~ 变量声明提升到当前作用域的最前面 不提升赋值操作
    函数提升~~~~~~ 函数声明提升到当前作用域的最前面 不调用函数
    函数表达式函数的调用必须写在函数表达式函数的下面
     // 局部变量
function fn() {
var num = 9;
console.log(num);
}
fn() // 作用域链
var num = 7; function fn1() { // 外部函数
var num = 3; function fn2() { // 内部函数 内部函数可以访问外部函数
console.log(num);
var sum = 4;
}
fn2()
}
fn1() console.log(num1); //坑1
var num1 = 80 fun() //坑2
var fun = function () {
console.log(66); } // 经典预解析案例
f1()
console.log(c);
console.log(b);
console.log(a); function f1() {
var a = b = c = 9;
// 相当于var a=9;b=9;c=9 b,c 没有声明直接赋值就是全局变量
console.log(a);
console.log(b);
console.log(c);
}
// 99999 a is not defined
 

javascript作用域、预解析笔记的更多相关文章

  1. ECMAScript1.3 数组 | 函数 | 作用域 | 预解析

    数组array 数组可以存储很多项,有顺序,很多项形成一个集合,就是数组. 数组字面量是:[] 如何获取数组中的数据:索引/下标,数组中的第一项的索引是从0开始的. ['kay', 'andy', 1 ...

  2. javascript作用域链学习笔记

    作用域链 "JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里." --权威指南 在JavaScript中,一切皆对象,包括函数.函数对象和其它对象 ...

  3. JavaScript作用域(链)学习笔记

    作用域是javascript老生常谈的问题,在面试题中也经常出现.此文记录本人对js作用域的理解.从以下三个方面深入探讨js作用域和js作用域链. 1.什么是作用域? 2.什么是作用域链? 3.常见面 ...

  4. [JavaScript] JavaScript作用域深度解析

    JavaScript作用域 JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里. -- JS权威指南 在JS里,一切皆对象,函数也是. 一.有什么用 什么时候会用到它? ...

  5. 从var func=function 和 function func()区别谈Javascript的预解析机制

    var func=function 和 function func()在意义上没有任何不同,但其解释优先级不同:后者会先于同一语句级的其他语句. 即: { var k = xx(); function ...

  6. JavaScript 作用域链解析

    JavaScript 中有 Scope( 作用域 ) , Scope chain( 作用域链 ) , Execute context( 执行上下文 ) , Active Object ( 活动对象 ) ...

  7. JavaScript函数之作用域 / 作用链域 / 预解析

    关于作用域和作用链域的问题,很多文章讲的都很详细,本文属于摘录自己觉得对自己有价值的部分,留由后用,仅供参考,需要查看详细信息请点击我给出的原文链接查看原文件 做一个有爱的搬运工~~ -------- ...

  8. javaScript中的小细节-script标签中的预解析

    首先介绍预解析,虽然预解析字面意思很好理解,但是却是出坑出的最多的地方,也是bug经常会有的地方,利用好预解析的特性可以解决很多问题,并且提高代码的质量及数量,浏览器在解析代码前会把变量的声明和函数( ...

  9. JavaScript的变量预解析特性

    JavaScript是解释型语言是毋庸置疑的,但它是不是仅在运行时自上往下一句一句地解析的呢?事实上或某种现象证明并不是这样的,通过<JavaScript权威指南>及网上相关资料了解到,J ...

随机推荐

  1. Python之常用模块学习(二)

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  2. 区分C语言中的指针函数和函数指针

    1.指针函数: 类型说明符 *函数名(形参表) { ..........   /*函数体*/ ..........    /*函数体*/ } 其中函数名之前加了"*"号表明,这是一 ...

  3. SpingBoot整合jxls2.0-excel导出—— 列表循环,自定义方法,超链接等

    Java中实现excel导出数据的方法有很多,一般简单的可以通过操作POI进行,但是复杂的excel格式导出如果用POI就显得非常麻烦,本文介绍的jxls2.0完全依据模板进行导出,只需要进行简单的配 ...

  4. sql与SQL CODE和SQL State相关报错

    操作数据库过程中,遇到许多问题,很多都与SQL CODE和SQL State相关,现在把一个完整的SQLCODE和SQLState错误信息和相关解释作以下说明,一来可以自己参考,对DB2错误自行找出原 ...

  5. Ethical Hacking - GAINING ACCESS(20)

    CLIENT SIDE ATTACKS - Spoofing backdoor extension Change the extension of the trojan from exe to a s ...

  6. Python Ethical Hacking - ARP Spoofing

    Typical Network ARP Spoofing Why ARP Spoofing is possible: 1. Clients accept responses even if they ...

  7. 【原创】xenomai内核解析--同步互斥机制(一)--优先级倒置

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有错误,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 目录 一.xenomai 资源管理简要 二.优先级倒 ...

  8. .net core options 依赖注入的方式

    options 依赖注入的方式 public class JwtSettingsOptions { public const string JwtSettings = "JwtSetting ...

  9. 解决用vscode开发arduino时Serial未定义

    在工作目录编辑c_cpp_properties.json文件 添加defines字段 { "configurations": [ { "name": " ...

  10. Jquery日历编写小练习

    日历练习 总体效果展示: 代码展示: 源代码部分 <body> <!-- 日历--> <div class="div_sty"> <tab ...