当前位置: 首页 > 面试题库 >

Javascript函数作用域和提升

闾丘英悟
2023-03-14
问题内容

我刚刚读了Ben Cherry撰写的有关JavaScript范围和提升,他提供了以下示例:

var a = 1;

function b() {
    a = 10;
    return;

    function a() {}
}
b();
alert(a);

使用上面的代码,浏览器将警告“ 1”。

我仍然不确定为什么它返回“ 1”。他说的一些事情让人想到:所有函数声明都被提升到顶部。您可以使用函数来限定变量的范围。仍然没有点击我。


问题答案:

功能提升意味着将功能移到其作用域的顶部。那是,

function b() {  
   a = 10;  
   return;  
   function a() {} 
}

交涉者将对此进行重写

function b() {
  function a() {}
  a = 10;
  return;
}

奇怪吗?

另外,在这种情况下,

function a() {}

表现与

var a = function () {};

因此,从本质上讲,这就是代码的作用:

var a = 1;                 //defines "a" in global scope
function b() {  
   var a = function () {}; //defines "a" in local scope 
   a = 10;                 //overwrites local variable "a"
   return;      
}       
b();       
alert(a);                 //alerts global variable "a"


 类似资料:
  • 本文向大家介绍javascript的函数作用域,包括了javascript的函数作用域的使用技巧和注意事项,需要的朋友参考一下 在一些类似c语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明他们的代码段之外是不可见的,我们称为块级作用域(block scope),而javascript中没有块级作用域。取而代之的javascript使用的是函数作用域(function sco

  • 作用域个数 = n(定义的函数个数) + 1(全局作用域) JavaScript函数高级——作用域与作用域链 一、作用域 (1)理解 就是一块"地盘", 一个代码段所在的区域。 它是静态的(相对于上下文对象), 在编写代码时就确定了。 (2)分类 全局作用域 函数作用域 ES6中新增了块级作用域 (3)作用 隔离变量,不同作用域下同名变量不会有冲突。 二、作用域与执行上下文 (1)区别1 全局作用

  • 本文向大家介绍浅谈JavaScript的函数及作用域,包括了浅谈JavaScript的函数及作用域的使用技巧和注意事项,需要的朋友参考一下 函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容。 (一)JavaScript函数 JavaScript函数是指一个特定代码块,

  • 本文向大家介绍JavaScript 基础函数_深入剖析变量和作用域,包括了JavaScript 基础函数_深入剖析变量和作用域的使用技巧和注意事项,需要的朋友参考一下 函数定义和调用 定义函数,在JavaScript中,定义函数的方式如下: 上述abs() 函数的定义如下: function 指出这是一个函数定义; abs 是函数的名称; (x) 括号内列出函数的参数,多个参数以,分隔; {...

  • 函数是JavaScript最有趣的部分之一,它可以是最简单的函数,也可以是最复杂的函数。一些额外的功能还可以通过闭包来实现。由于函数也是对象,所以通过函数指针来操作函数是最非常简单的,以下是几种函数使用的高级技巧。 安全的类型检测 JavaScript内置的类型检测机制并非完全可靠。如:intsanceof操作符在存在多个全局作用域的情况下,也是有问题的。 var arr = ["1", "2",

  • 主要内容:JS 全局作用域,JS 局部作用域在 JavaScript 中,您可以在任意位置声明变量,但不同的位置会影响变量的可用范围,这个范围称为作用域。作用域可以大致分为两种类型,分别是全局作用域和局部作用域。下面就来分别介绍一下。 JS 全局作用域 全局作用域是指变量可以在当前脚本的任意位置访问,拥有全局作用域的变量也被称为“全局变量”,一般情况下拥有以下特征的变量具有全局作用域: 最外层的函数和在最外层函数外面定义的变量拥有全局作用域