函数作用域

华为昇腾 910B 实战:DeepSeek-R1 蒸馏模型高效部署与性能调优全解析 本文详细解析了在华为昇腾910B硬件平台上高效部署DeepSeek-R1蒸馏系列模型(14B/32B版本)的完整实战流程。内容涵盖从MindIE环境搭建、镜像获取、模型准备,到服务配置、内存参数调优、性能测试及常见问题排查,为开发者提供了基于昇腾910B进行大模型部署与优化的全链路指南。 阅读详情

函数作用域

在JavaScript中变量的作用域,并非和C、Java等编程语言似得,在变量声明的代码段之外是不可见的,我们通常称为块级作用域,然而在JavaScript中使用的是函数作用域(变量在声明它们的函数体以及这个函数体嵌套的任意函数体都是有定义的)

JavaScript的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的,可以在整个函数的范围内使用及复用,也就是说在函数体内变量声明之前就已经可用了(事实上在嵌套的作用域中也可以使用)。

 

js 的作用域

 

一.ES5中的作用域

 

1.全局变量:声明在函数外部的变量,在代码中任何地方都能访问到的对象拥有全局作用域(所有没有var直接赋值的变量都属于全局变量)

(1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如:

var authorName="山边小溪";
function doSomething(){
    var blogName="梦想天空";
    function innerSay(){
        alert(blogName);
    }
    innerSay();
}
alert(authorName); //山边小溪
alert(blogName); //脚本错误
doSomething(); //梦想天空
innerSay() //脚本错误

(2)所有末定义直接赋值的变量自动声明为拥有全局作用域,例如:

function doSomething(){
    var authorName="山边小溪";
    blogName="梦想天空";
    alert(authorName);
}
doSomething(); //山边小溪
alert(blogName); //梦想天空
alert(authorName); //脚本错误

变量blogName拥有全局作用域,而authorName在函数外部无法访问到。

(3)所有window对象的属性拥有全局作用域

 一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。

2.局部变量:声明在函数内部的变量,和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域(所有没有var直接赋值的变量都属于全局变量)

function doSomething(){
    var blogName="梦想天空";
    function innerSay(){
        alert(blogName);
    }
    innerSay();
}
alert(blogName); //脚本错误
innerSay(); //脚本错误

代码中的blogName和函数innerSay都只拥有局部作用域。
 

二.ES6中的作用域 

1、为什么需要块级作用域

ES5只有全局作用域和函数作用域,没有块级作用域,会带来以下问题:

1) 变量提升导致内层变量可能会覆盖外层变量

var i = 5;  
function func() {  
    console.log(i);  
    if (true) {  
        var i = 6;  
    }  
}  
func(); // undefined  

2) 用来计数的循环变量泄露为全局变量

for (var i = 0; i < 10; i++) {    
        console.log(i);    
}    
console.log(i);  // 10  

2、ES6的块级作用域

‘块级作用域’通过新增命令let和const来体现。

let

let和var差不多,都是用来声明变量的。区别就在于:

  1、  let声明的变量只在所处于的块级有效;

  2、  let没有‘变量提升’的特性,而是‘暂时性死区(temporal dead zone)’特性。

(1)let声明的变量只在块级有效

'use strict';
function func(args){
    if(true){
        //let声明i
        let i = 6;
        //在if内打印i值
        console.log('inside: ' + i);//6
    }
    //在if外,再次打印i值
    console.log('outside: ' + i);//i is not defined
};
func();

这因为let声明的变量i是属于if内的块级作用域;而不是像var一样。

(2)let没有‘变量提升’的特性,而却有‘暂时性死区(temporal dead zone)’的特性。

'use strict';
function func(){
    //在let声明前,打印i
    console.log(i);//i is not defined
    let i;
};
func();

在let声明变量前,使用该变量,它是会报错的,而不是像var那样会‘变量提升’。其实说let没有‘变量提升’的特性,不太对。或者说它提升了,但是ES6规定了在let声明变量前不能使用该变量。

'use strict';
var test = 1;
function func(){
    //打印test的值
    console.log(test);//i is not defined
    let test = 2;
};
func();

如果let声明的变量没有变量提升,应该打印’1’(func函数外的test);而他却报错,说明它是提升了的,只是规定了不能在其声明之前使用而已。我们称这特性叫“暂时性死区(temporal dead zone)”。且这一特性,仅对遵循‘块级作用域’的命令有效(let、const)。

(3)可以解决闭包问题

var arr = [];
for(var i = 0; i < 2; i++){
    arr[i] = function(){
        console.log(i);
    };
};
arr[1]();//2
'use strict';
var arr = [];
for(let i = 0; i < 2; i++){
    arr[i] = function(){
        console.log(i);
    };
};
arr[1]();//1

const

const命令与let命令一样,声明的变量,其作用域都是块级。

所以const遵循的规则与let相差无二,只是,const是用来声明恒定变量的。

且,用const声明恒定变量,声明的同时就必须赋值,否则会报错。

'use strict';
function func(){
    const PI;//报错,声明就得赋值
    PI = 3.14;
    console.log(PI);
};
func();

 

硬件基础(4):(7)ADC电压采集:软件校准(标定、拟合) 在实际项目中,**软件端校准**可以有效弥补硬件方面(分压电阻误差、放大器失调、参考源误差等)带来的系统性偏差,从而提高 ADC 测量精度。下面是一个常见的**多点实测校准**流程与思路,个人感觉传感器标定的原理也只这样。 阅读详情

相关推荐

【冷冻电镜】RELION5.0使用教程总结

对于您自己的数据,您可能希望使用各种倾斜系列对齐方法,然后比较每种方法生成的断层扫描图像的质量(参见下一步)。通过检查 CtfFind job 的 tilt_series 目录中的star文件来检查几个倾斜系列的散焦值。GitHub上也有人反应这个问题,目前我的解决方案是下载了较低版本的CTFFIND的,降级到4.1.10可以成功运行。此外,logfile.pdf 文件包含所有显微照片的有用参数图,例如散焦、像散、估计分辨率等,以及整个数据集中这些值的直方图。的目录,以及指向此目录的符号链接。

进阶中的程序员吃吃的博客 4239

函数的作用域

一、作用域 作用域就是变量生效的范围,在此之下又有全局作用域和局部作用域之分。 1、全局作用域 全局作用域是最大的作用域,他包含了局部作用域。在全局作用域中定义的变量可以在任何地方使用 在页面打开时,浏览器会给我们产生一个全局作用域(widow),这个作用域会一直存在直到浏览器关闭才会消失。 var a=10 var b=10 //这两个变量a,b都可以在任意地方使用,因为他们是全局变量 2、局部作用域 局部作用域是在全局作用域下产生的一个较小的作用域,在这个作用域里面声明的变量,只能在这一块区域使用

yzy2736的博客 4905

《LangChain技术原理剖析:OpenAI Function Calling的实践与应用》

,"unit": {},name:函数的唯一标识符:自然语言描述,决定LLM如何选择该函数parameters:定义输入参数的完整Schema。

qq_62223405的博客 980

函数的作用域是什么?js 的作用域有几种?

嗯嗯

薛跳跳的博客 2万+

Windows 游戏 EXCEPTION_ACCESS_VIOLATION 修复:3类硬件问题与5步软件排查法

本文提供Windows游戏EXCEPTION_ACCESS_VIOLATION错误的终极修复指南,涵盖3类硬件问题(内存故障、显卡问题、超频不稳定)和5步软件排查法(文件验证、驱动更新、DEP调整等),帮助玩家彻底解决0xFFFFFFFFFFFFFFFF内存访问冲突问题。

weixin_31856057的博客 2456

基于STM32的红外测温系统设计

为了实现本次的毕业设计,我搜集了大量的文献与资料,通过这些资料了解到红外测温的优点,与实现所需的基本器件,并设计了几个方案,最终选择了STM32作为主控芯片,为此还查阅了关于STM32的资料,在此次设计中采用的是MLX90614医用红外测温模块,通过查阅其数据手册了解其测量精度高且自带温度补偿,所以选择了该传感器作为红外测温模块,本次设计到此已经基本完成,硬件部分和软件部分的设计已基本完成。

weixin_112233的博客 1422

函数及其作用域——(C语言笔记)

C~男大学生自用99新,函数笔记

m0_74970386的博客 3228

产品经理如何运用AI提升工作效率

AI技术的应用为产品经理的工作流程带来了显著的效率提升。从需求收集到产品上线,AI可以在多个阶段提供智能化支持,帮助产品经理更好地理解用户需求、优化产品设计、提高开发和测试效率。在未来,随着AI技术的不断发展,产品经理将能够更加高效地管理产品生命周期,为用户提供更优质的产品体验。应用 | AI + 千行百业欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。

不想宅的冷同学 1337

JavaScript/数据类型/function/作用域

原作者阮一峰老师。目前为止看过最通俗易懂的作用域描述,特此截取部分方便查看理解 函数作用域 定义 作用域(scope)指的是变量存在的范围。在 ES5 的规范中,Javascript 只有两种作用域:一种是全局作用域,变量在整个程序中一直存在,所有地方都可以读取;另一种是函数作用域,变量只在函数内部存在。ES6 又新增了块级作用域,本教程...

weixin_33749242的博客 369

Microsoft Speech SDK 使用过程中女声改为男声遇到的问题

问题将女生改为系统自带男声(Kangkang)根据上面的步骤我的播放声音是改变了,但是还是女生,是yaoyao的女生。是因为下面注册表路径中VoicePath这个配置的路径指向了yaoyao的文件。 如何使用Microsoft Speech SDK,请参考https://blog.youkuaiyun.com/daoming1112/article/details/77542562 使用系统自带男声语音,不需...

u012161365的博客 7538

具身智能与空天具身智能:从理论到实践的跨领域融合

本文深入探讨了具身智能从理论到实践的发展,重点分析了空天具身智能这一前沿领域。文章阐述了如何为AI赋予“身体”,使其通过与环境实时交互进化智能,并详细拆解了构建空天智能体所需的核心技术模块,包括多模态感知、基于大模型的决策规划以及鲁棒控制。同时,结合山区电力线自主巡检等实战案例,展望了多智能体协同与标准化等未来方向。

weixin_29045585的博客 533

JS四大作用域

浅谈作用域 - 匿名函数 - 作用域链

m0_67212141的博客 1181

Level 4自动驾驶系统设计0——功能与场景0

摘要:当前智能驾驶系统开发存在应试思维误区,过度依赖NCAP标准测试而忽视真实物理世界的复杂工况。随着系统进入L4大模型时代,必须从离散测试转向应对无限连续的长尾场景。关键在于解决传感器输入质量(避免"垃圾进垃圾出"问题),通过逆向定义方法论确保前端数据高置信度。同时采用影子模式收集分歧数据流,结合条件接受机制动态调整感知权重,最终实现功能释放主权(FO)的100%安全闭环。本文揭示了如何为端到端智驾大模型建立物理红线,这是确保L4系统量产的底层法则。

Godspeed_zwh的博客 307

块级作用域和函数作用域

1.块级作用域 什么是块级作用域? {} 这个花括号里面的作用域就是块级作用域。 var i = 100 for(var i=0; i<5; i++){ console.log(i) //1,2,3,4 } console.log(i) //5 使用var的话就会导致在for循环里面的i覆盖掉了上面的i,然后i的值就发生了改变,所以我们需要一块私有领域来包裹住for里面产生的变量,所以产生了块级作用域。 解决方法:换成let或者const就OK了。 再 //外层作用域无法获取内层作用域 fu

weixin_47731512的博客 2113

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

js进阶——函数作用域和块作用域

理解这些作用域概念和使用场景,能帮助开发者更好地控制代码的可维护性与性能,特别是在处理复杂逻辑时,掌握作用域的原理能避免许多常见的 JavaScript 错误。IIFE 的核心特点是,它能够创建一个独立的作用域,其中的变量不会泄露到外部作用域。语句创建了一个以指定对象为上下文的块作用域,允许直接访问对象的属性,但其使用并不推荐,因为它会导致难以预测的作用域链问题。通过在函数内部声明变量,我们可以隐藏这些变量的实现,使它们只在函数内部可用,而外部看不到这些实现。的作用域提升问题,变量在块作用域内有效。

2301_79858914的博客 1526

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

js的函数作用域跟块级作用域

一,js中的作用域     js中除了全局作用域,还有函数作用域。     嗯,还有块级作用域。 二,函数作用域跟块级作用域的区别     当将代码看成一个IIFE时,全局作用域其实就是一个函数作用域。     那么函数作用域跟块级作用域的区别是什么呢?           函数作用域:变量在定义的函数内及嵌套的子函数内处处可见;           块级函数域:变量在离开定义的块级

huangjq36SYSU的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

函数本身的作用域

函数本身也是一个值,也有自己的作用域。它的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在作用域无关。 var a = 1 var x = function() { console.log(a) } function f() { var a = 2 x() } f() 上面代码中,函数x是在函数f的外部声明的,所以它的作用域绑定外层,内部变量a不会到函数f体内取值,所以输出1...

qq_29055201的博客 248

JS作用域:全局作用域,函数作用域,块级作用域

JS在ES6之后配合let和const有了块级作用域,弥补了var变量提升带来的设计缺陷

weixin_43443341的博客 1183

JavaScript函数作用域

JavaScript函数作用域 JavaScript作用域 作用域: 作用域指一个变量的作用范围 JS中一共两种作用域: (1)全局作用域 (2)函数作用域(局部作用域) 1、全局作用域 直接写在script标签的JS代码,都在全局作用域 全局作用域在页面打卡的时候创建,在页面关闭时销毁 在全局作用域中有一个对象window,他代表一个浏览器的窗口,它由浏览器创建,我们可以直接使用 在全局作用域中: 创建的变量都会作为window对象的属性保存 全局中的函数都...

weixin_49756484的博客 1342

全局作用域和函数作用域

作用域:指的是一个变量的作用范围 在js中一共有两种作用域 一.全局作用域 直接编写在script标签中的js代码,都在全局作用域 全局作用域在页面打开时创建,在页面关闭时销毁 在全局作用域中有一个全局对象window,它代表的是一个浏览器的窗口,由浏览器创建我们可以直接使用 1.在全局作用域中 创建的变量都会作为window对象的属性保存 创建的函数都会作为window对象的方法保存 2.全局作用域中变量都是全局变量,在页面的任意部分都可以访问得到 3.变量的声明提前 ①.使用var关

weixin_46505015的博客 581

函数作用域和块作用域

函数作用域和块作用域 函数作用域 函数作用域:属于这个函数的全部变量都可以在整个函数的范围的范围内使用及复用。 最小暴露原则:最小限度地暴露必要内容,而将其他内容隐藏起来,例如某个模块或对象的API。 在任意代码片段外部包装函数,可以隐藏内部的变量和函数定义,外部作用域无法访问。但是导致一些问题:1.必须声明一个具名函数foo( ),foo这个名称本身‘污染’了所在的作用域;2...

学海无涯,更无止境。 1224

函数作用域 & 块作用域

函数作用域 函数作用域:属于这个函数的全部变量都可以在整个函数的范围内使用和复用(事实上在嵌套的作用域中也可以使用),在函数外部无法访问到。 隐藏内部实现:可以把变量和函数包裹在一个函数的作用域中,然后用这个作用域来隐藏它们。 为什么“隐藏”变量和函数是一个有用的技术? –》“最小授权/最小暴露原则”,指在软件设计中,应该最小限度的暴露必要内容,而将其他内容都隐藏起来。 规避冲突:可以避免同名...

weixin_39412098的博客 374
上一篇: 计时器 setInterval 练习, 秒杀 时钟
下一篇: Javascript DOM 对象
昨夜太平长安888
博客等级 码龄9年 1万+粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值