javascript作用域和预解析

Javascript作用域及预解析 01-JavaScript作用域 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> 阅读详情

作用域和预解析

个人理解:

首先是作用域:
作用域分为全局和函数作用域 (在es6中还存在块作用域,let定义变量时,可以自行了解).那么全局也就是window,我们定义变量时是针对window定义的变量在任何地方都是存在并且可以调用的。
相对应的就是在函数中定义变量时是针对函数来说的局部变量,在函数外是无法找到的。并且在函数嵌套时,你要明白只能从内向外寻找变量,不能从外向内寻找变量。

<p> function a(){
<p>      console.log(c);
<p>      function b(){
<p>        var c=1;
<p>      }
<p>    }
<p>    a();
    
结果为undefined
 function a(){
            var c=1;
            function b(){
            var c=3;
            console.log(c);
            }
            b();
            console.log(c);
        }
        a();
结果为3 1  因为b内是 var 重新定义的c 这个c和函数a中的c完全没关系  当我们省略函数b中的var 那么会得到两个 3 
理解函数内部后,全局变量和局部变量更容易理解了 window就是一个大环境 里面的函数都可以调用变量而外面的不能调用函数内部的变量
var d=1;
 function a(){
            var c=1;
            function b(){
            var c=3;
            console.log(c);
            }
            b(); //执行b函数
            console.log(c);
     	    console.log(d);
        }
        a(); //结果3 1 1  这里a函数内找不到d就会继续往上寻找
console.log(c);
 //undefined

理解之后我们来讲预解析:预提前的意思,window也就是全局中的变量和函数都在进行浏览器解析的时候,都会在最开始的地方先将变量和函数定义出来 也叫做变量提升 未定义的结果也就是undefined;定义是定义 赋值是赋值 在没有赋值之前我们打印它 那么就是undefined 赋值之后就是我们所想要的结果。函数也一样

 console.log(d);  //undefined
        var d=1;  //也就是说在d没有声明赋值之前 打印d会是undefined
 console.log(a());//在函数声明前先打印函数a()    
        var d=1;
        function a(){
            var c=1;
            function b(){
            var c=3;
            console.log(c);
            }
            b(); //执行b函数
            console.log(c);
     	    console.log(d);
     	    //return c; //这里最后的结果就是c的值为1
        }
        
        //结果是3 1 undefined undefined  

为什么呢 先执行a里面的内容 3 1 undefined 因为我们在d赋值之前执行函数所以d虽然被定义了但是没有赋值 所以是undefined 而最后一个undefined 是a()函数的返回值 因为没有renturn的函数的返回值都是undefined 当我们给return 那么结果就会改变

刚才说的是全局的预解析 那么在函数里也是同理,如果在函数里面的定义变量赋值之前打印它 也是undefined 就像这样

  function a(){
            console.log(c);
            var c=1;
        }
        a();
        结果为 undefined
function a(n){   //函数的参数 也是函数的局部变量
    if(n){
        s="ifscope";
        for(var/* let*/ i=0;i<10;i++)  ;
    }
    console.log(i);   //如果let定义i 我们就会看到i没有定义
}
a(true);  //结果是10
console.log(s);  //这里的s是ifscope

这里就很容易帮助我们理解在循环外打印这个 s 在函数中没有使用var 或者let定义 ,会d自动被定义为全局变量所以我们才能在打印s的时候看到结果,如果使用了let或者var 就会看到报错没有定义。另外如果用let来定义i,我们在循环外打印i也会看到未定义的报错,这就能看出let的块作用域只针对循环内部

在es6中已经不支持变量提升了,会直接报错。

代码复现——SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架 根据《SymAgent: A Neural-Symbolic Self-Learning Agent Framework for Complex Reasoning over Knowledge Graphs》(《SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架》)论文思路,简单复现代码,以实现SymAgent中的Agent-Planner和Agent-Executor模块。Agent-Planner利用大语言模型的归纳推理能力从知识图谱中提取符号规则,指导高效的问题分解。 阅读详情

相关推荐

计算机控制液压同步顶升系统,PLC四点多点同步顶升系统,同步液压顶升系统

PLC同步顶升系统系统可分为5个部分:液压泵站、PLC计算机控制系统、液压终端、位移压力检测与人机界面操作系统,位移同步精度1mm,同步控制点数:4,8,12,16,20,40,80,99;产品特点:高速置零、低速顶升,升降速度可以任意控制;液压千斤顶内置式(或外置)位移、压力传感器、均载阀,保证了顶升系统在恶劣工作环境下的高可靠性;均载阀的过载保护功能,避免了多缸顶升时常见的胀缸事故;先进的进油...

weixin_30093045的博客 1434

JavaScript中的作用域和预解析

回顾 上一篇中我们主要说了 js 的函数,牵扯到函数的概念与使用,以及函数的传参和调用等方面的内容,函数是js中最具代表意义的功能,也是未来十分常用技术点。文章内容都是非常之基础,如果想了解深入建议多看看红宝书等书籍。 这篇中我们要说一下 js 中的作用域和预解析,对于正常思维考量,你一定会觉得这部分内容会有不解,特别是针对预解析的内容,但是没关系,你可以尝试的多了解了解 js 的发展历程等原因会发现语言的发展绕不开它本身当下的环境和所处时代等多种因素。 作用域 作用域:是代码名字(变量)在某个范围内起到的

夸克IT 931

告别老旧内核!手把手教你为Android 10设备手动更新WebView(以升级至97版为例)

本文详细指导如何在Android 10设备上手动更新WebView至97版,解决老旧内核导致的兼容性、性能和安全问题。通过ADB命令和图形化操作两种方案,无需Root即可完成升级,显著提升网页加载速度和安全性。

weixin_28672681的博客 582

JS作用域和预解析机制

1. 作用域域:空间、范围、区域。。。 作用:读、写alert(a); var a=1;结果为undefinedalert(a); var a=1;直接报错(因为没有找到var) 浏览器:JS解析器。 1)找一些东西:var function 参数 ① 找到a=未定义(undefined), 所有的变量,在正式运行代码之前,都提前赋

jiaojsun的博客 644

LVGL在RTOS下的线程安全实践:从卡死到流畅的界面切换

本文探讨LVGL在RTOS环境下的线程安全实践,重点分析FreeRTOS多任务同步机制,包括互斥锁、任务通知和消息队列方案。通过实际案例展示如何避免界面卡顿和系统死锁,实现从卡死到流畅的界面切换,为嵌入式GUI开发提供可靠的适配解决方案。

uran的专栏 1111

从零到一:YT8512C PHY芯片在STM32F407上的LWIP移植实战与避坑指南

本文详细介绍了YT8512C PHY芯片在STM32F407平台上基于LWIP协议栈的移植实战,涵盖硬件连接、CubeMX配置、寄存器定制和调试技巧。重点解析了与主流PHY芯片的差异,提供了完整的避坑指南和优化建议,帮助开发者快速实现稳定可靠的嵌入式网络连接。

uber9的博客 538

如何延长作用域链_深究JavaScript作用域(链)知识点和闭包

在学习作用域和作用域链知识的时候,我一度都是处于犯迷糊的边缘,直到前两天,有人在群里聊了有关作用域的面试题,我当时闭上眼睛心想要是问到我该怎么回答。这两天查了资料,做了几道面试题,觉得要输出一点我自己的理解,本文将通过几个简单的代码片段和面试题对JavaScript作用域和闭包的相关知识一探究竟。文中的表述如有不对,欢迎指正~ 如觉得还行请点亮左侧的:+1::see_no_evil:1、 一个变量...

weixin_39624389的博客 568

Transformer-Based Attention Networks for Continuous Pixel-Wise Prediction 基于Transformer注意力网络连续像素级与估计

Transformer-Based Attention Networks for Continuous Pixel-Wise Prediction 基于Transformer注意力网络的连续的像素级的

MengYa_Dream的博客 4716

JavaScript作用域以及预解析详解

作用域:变量可以起作用的范围 全局变量:声明的变量是使用var声明的,那么这个变量就是全局变量,全局变量可以在页面的任何位置使用 除了函数以外,其他任何位置定义的变量都是全局变量 ...

dwjdj的博客 237

逆变器母线电容选型与均压电阻设计实战指南

本文为逆变器母线电容选型与均压电阻设计提供了实战指南。文章从工程角度出发,详细解析了母线电容耐压值、容值的计算方法,并重点强调了纹波电流热设计的重要性。同时,深入探讨了串联电容均压电阻的设计原则与功率计算,通过5.5kW变频器案例,系统演示了从参数确定到最终选型的完整流程,旨在帮助工程师设计出稳定可靠的逆变器系统。

weixin_29299807的博客 292

全国30米分辨率逐年植被覆盖度(FVC)数据集

植被覆盖度是描述地表植被的重要参数与生态环境的基本指标,在大气圈、土壤圈、水圈和生物圈中都占据着重要的地位,区域及全球范围的植被覆盖度估算对植被及相关领域的研究具有重要意义。往往参照《土壤侵蚀分类分级标准》,将植被覆盖度划分为4个等级:<30%为低覆盖度、30%—45%为中低覆盖度、45%—60%为中覆盖度、>60%为高覆盖度。本数据集包括1986至2022年间,全国植被覆盖度数据,FVC范围值为0-1,数据为浮点型,GeoTIFF格式。NDVImax 和NDVImin分别为区域内最大和最小的NDVI值。

地球资源数据云的官方博客 1966

javascript作用域底层作用分析

什么是作用域(Scope)?作用域产生于程序源代码中定义变量的区域,在程序编码阶段就确定了。javascript 中分为全局作用域(Global context: window/global )和局部作用域(Local Scope , 又称为函数作用域 Function context)。简单讲作用域就是当前函数的生成环境或者上下文(注意:暂且不要与后面讲的执行上下文混淆了),包含了当前函数内定义...

weixin_39877717的博客 568

FPGA电路设计2——芯片原理图绘制

FPGA板卡设计要点:1. 引脚分配遵循电平标准分组原则,需通过预编译验证;2. 电源设计需满足上电时序要求并合理估算功耗;3. 最小系统包含配置Bank(Bank0)、通用I/O Bank(HRBank)、高性能Bank(HPBank)和高速收发器Bank(MGT/GTX)。其中Bank0负责关键配置功能,包括模式选择(支持SPI/BPI/JTAG等5种配置方式)、JTAG调试接口和系统监控引脚,其电压选择(CFGBVS_0)必须与VCCO_0电压匹配。

在读研究生,FPGA电路设计与功能开发。 1238

【JavaScript】JS中的作用域与预解析

简单介绍JS中的作用域:全局作用域、局部作用域、作用域链,预解析机制

一文不值的博客 511

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【JavaScript】(九) 作用域和预解析

➢通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。➢作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。全局作用域局部作用域(函数作用域)...

weixin_48650082的博客 508

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

javascript-初级-day06作用域、JS预解析机制

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> /* // 作用域: ...

133

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JavaScript自学——作用域、预解析

JavaScript作用域

m0_69144551的博客 969

九、JavaScript作用域、预解析

①代码名字(变量)在某个范围内起作用和效果 目的是为了提高程序的可靠性更重要的是减少命名冲突②js的作用域(es6)之前:全局作用域 局部作用域③全局作用域:整个script标签 或者是一个单独的js文件④局部作用域(函数作用域)在函数内部就是局部作用域 这个代码的名字只在函数内部起效果和作用。

shi_jiaye的博客 544

JavaScript基础之作用域、预解析

前言通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突!!注意:此文章不考虑ES6语法1.作用域。

2401_87034185的博客 473

JavaScript作用域及预解析

js的作用域分为全局作用域 和 局部作用域。 变量的作用域:根据作用域的不同我们变量可以分为全局变量 和 局部变量。 预解析:js引擎会把js里面所有的 var 还有 function 提升到当前作用于的最前面。 预解析分为:变量预解析(变量提升)和函数提升...

m0_72313625的博客 342

Javascript(四):作用域、JS预解析、对象

通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。1.JavaScript作用域:就是代码名字(变量)在某个范围内起作用和效果目的是为了提高程序的可靠性更重要的是减少命名冲突2.js的作用域(es6)之前:全局作用域局部作用域3.全局作用域:整个script标签或者是一个单独的js文件。

Kiwi23333的博客 938

【经典面试题】JS作用域、作用域链、预解析

目录 一、作用域 1. 全局作用域(Global Scope) 2. 局部作用域(Local Scope)  3. 块级作用域 二、作用域链 三、预解析 一、作用域 作用域是可访问的变量的集合。在JavaScript中,作用域为可访问变量,对象,函数的集合,它分为局部作用域和全局作用域。作用域决定了这些变量的可访问性(可见性)。 1. 全局作用域(Global Scope) 在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:(1)最外层函......

王春燕的博客 4709

JavaScript学习总结(作用域、JS预解析)

学习JavaScript的作用域和与解析

2202_75688394的博客 176

js作用域及预解析

作用域(全局作用域和局部作用域)、变量的作用域(全部变量和局部变量)、作用域链以及预解析

qq_44757223的博客 552

javaScript 作用域 预解析

作用域 作用域概述 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。 JavaScript(es6前)中的作用域有两种:  全局作用域  局部作用域(函数作用域) 全局作用域 作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件。 局部作用域 (函数作用域) 作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。

Ulrica_Amaris的博客 370
上一篇: javascript的this的个人理解
下一篇: 浅谈javascript面向对象和类
MaxLoongLvs
博客等级 码龄9年 226粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaxLoongLvs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值