作用域,作用域链和预解析

   
  • 变量---->局部变量和全局变量,
  • 作用域: 就是变量的使用范围
 
  1. 局部作用域和全局作用域
  2. js中没有块级作用域---一对括号中定义的变量,这个变量可以在大括号外面使用
  3. 函数中定义的变量是局部变量
 
    while (true) {
var num = 10;
break;
}
console.log(num); //
    {
var num2 = 100;
}
console.log(num2); //
    if (true) {
var num3 = 1000;
}
console.log(num3); //
    function f1() {
//局部变量
var num = 10;
}
console.log(num); //underfined 局部变量,外面访问不到
    作用域链: 变量的使用, 从里向外, 层层的搜索, 搜索到了就可以直接使用了
    层层搜索, 搜索到0级作用域的时候, 如果还是没有找到这个变量, 结果就是报错
 
    var num = 10; //作用域链 级别:0
var num2 = 20;
var str = "abc"
function f1() {
var num2 = 20;
function f2() {
var num3 = 30;
console.log(num);
}
f2();
}
f1(); //
预解析: 就是在浏览器解析代码之前, 把变量的声明和函数的声明提前(提升)到该作用域的最上面
 
变量提前,值没有提前
var =num
console.log(num);
num=10;
 
    // 变量的提升
console.log(num);
var num = 100; //undefinded
    //函数的声明被提前了
f1();
function f1() {
console.log("这个函数,执行了");
}

报错

    f2()
var f2 = function () {
console.log("小杨好帅哦");
};
 

JS高级---作用域,作用域链和预解析的更多相关文章

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

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

  2. 第十八篇 js高级知识---作用域链

    一直有想法去写写js方面的东西,我个人是最喜欢js这门语言,喜欢的他的自由和强大,虽然作为脚本语言有很多限制的地方,但也不失为一个好的语言,尤其是在H5出现之后.下面开始说说js的方面的东西,由于自己 ...

  3. 关于js语法中的一些难点(预解析,变量提前,作用域)

    ******标题很吓人************ 其实就是一个小小的例子 ,从例子中简单的分析一下作用域.预解析和变量提前的概念 <!DOCTYPE html> <html> & ...

  4. JS高级心法——作用域链

    首先我们来看两个js中的代码:    <script type="text/javascript"> var c=5; function t1(){ var d=6 f ...

  5. JS高级——词法作用域

    作用域 1.js中没有块级作用域 2.如果有块级作用域,那么下面代码将会是undefined undefined <script> for (var i = 0; i < 10; i ...

  6. JS高级——Function原型链

    基本概念 1.函数可以通过Function new出来,那么Function可以被称作构造函数,被new出来的函数可以被称为一个对象 2.Function既然是构造函数,那么肯定也有原型,它的原型是一 ...

  7. js的预解析

    在ES6之前,变量使用var声明,会存在变量的预解析(函数也有预解析).ES6引了let和const,但是现阶段ES6并没有完全普及,而且很多比较老的代码都还是按照ES5的标准甚至是ES3的标准来书写 ...

  8. js 预解析

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

  9. JS解析+预解析相关总结

    [js预解析机制]先来说说js的解析机制吧,浏览器在解析js代码时是从上到下解析的.解析顺序如:(1)预解析    找var和function (2)逐行代码解析    表达式    函数调用     ...

随机推荐

  1. contos7命令行访问网址

    1.curl访问: 例子: curl http://www.baidu.com 注意:这种访问只会直接读取网站HTML代码出来 2.elinks访问: yum -y install elinks  : ...

  2. PHP Strings

    <?php //1. how to use mail function //create short variable names $name=$_POST['name']; $email=$_ ...

  3. linux系统如何进行录屏

    linux系统如何录屏安装SimpleScreenRecorder 按Ctrl+ALt+T打开终端 添加源: sudo add-apt-repository ppa:maarten-baert/sim ...

  4. Java(三)String类

    一.String类初始化方法 1.初始化一个空字符串 String str=new String();//这里调用了String的无参构造方法 2.初始化一个有值的字符串 String str1=&q ...

  5. JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片

    代码如下: package com.futuredata.dataservice.util; import java.io.ByteArrayOutputStream; import java.io. ...

  6. Windows10通过命令行导出笔记本电池使用信息

    powercfg /batteryreport /output "D:\Thinkpad x1c\battery_report_2020_2_25.html" 可以导出电池的电池类 ...

  7. Python获取时间范围

    import datetime def dateRange(beginDate, endDate): dates = [] dt = datetime.datetime.strptime(beginD ...

  8. MongoDB批量更新和批量插入的方式

    最近,在调试代码中发现向MongoDB插入或者更新文档记录时若是多条的话都是采用for循环操作的,这样的处理方式会造成数据操作耗时,不符合批量处理的原则:对此,个人整理了一下有关MongoDB的批量更 ...

  9. ansible-主机分组

    一.安装ansible yum install ansible -y ansible --version //查看版本,没有报错即安装成功 二.ansible主机定义与分组 1. ansible配置文 ...

  10. 杭电oj_2047——阿牛的EOF牛肉串(java实现)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2047 思路:先是列出了四个,但是没发现规律,然后开始画递归树,在其中找到了规律,算出递归式为f(n) ...