首页 > 其他分享 >在预解析下,函数和变量都会发生提升,且函数提升在变量提升之前

在预解析下,函数和变量都会发生提升,且函数提升在变量提升之前

时间:2023-11-13 15:26:32浏览次数:32  
标签:200 函数 提升 var 解析 变量

执行以下程序,输出结果为()

var a = 100;
function a(){
  var a = 200;
  console.log(a);
}

a();

A
100

B
200

C
抛出异常

D
f a(){var a = 200;console.log(a);}

正确答案:C

在预解析下,函数和变量都会发生提升,且函数提升在变量提升之前,
故在全局作用域下,a首先被定义为函数变量,接着又被覆盖为一个数值型,然后再调用函数a,显然会抛出异常,原因是a已经不再是函数。
在函数内部,还存在着局部变量a,但它对函数外部的变量不会产生影响

函数提升优先级高于变量提升,且不会被同名变量声明覆盖,但是会被变量赋值后覆盖

由于作用域提升,a首先被定义为函数变量,接着又被声明为一个变量,变量被赋值为一个数值型,然后再调用函数a,显然会抛出异常,原因是a已经不再是函数

标签:200,函数,提升,var,解析,变量
From: https://www.cnblogs.com/longmo666/p/17829212.html

相关文章

  • 闭包产生的条件:内部函数使用外部变量+外部函数被调用(满足)
    下列关于闭包描述正确的是?()A闭包内变量执行后不会被清除B闭包不满足链式作用域结构C(Function(){})()理论上是一个闭包D闭包不耗内存,可以随意使用正确答案:AC可以用(function(){})()来构成闭包,而不是(function(){})()是闭包。这个要明确直接写(function(){vara=1......
  • 在eval中使用var声明的全局变量可以被delete删除; 未使用var声明的全局变量可以使用de
    执行完如下程序后,所有能被访问到的变量包括()vara=1;b=2;eval('varc=3');deletea;deleteb;deletec;Aa、b、cBa、cCaDc在eval中使用var声明的全局变量可以被delete删除,所以变量c能删除成功,除此之外,在其他情况下,使用var声明的全局变量或者局部变量一般是......
  • if函数
    if的用法#include<stdio.h>intmain(){ floata;a=(a<=100&&a>=0);     这部分对a重新赋值,赋值的就是一个运算结果,为了不影响下面输入的数字只能将这步写在floata之后printf之前才不会影响到输入值 printf("请输入a:"); scanf("%f",&a); if(a<=100&&a>=90)printf......
  • String.fromCharCode 函数如何在 html 输入字段中用于移动键盘
    String.fromCharCode函数用于将Unicode编码转换为对应的字符。在HTML输入字段中,您可以使用JavaScript和String.fromCharCode函数来移动键盘。以下是一个简单的示例:首先,创建一个HTML文件,包含一个输入框和一个按钮:<!DOCTYPEhtml><htmllang="en"><head><metacharse......
  • 深度学习之交叉熵损失函数(在分类问题如图像识别时可以考虑)
    1. 熵2. 交叉熵损失函数交叉熵能够衡量两个分布的异同程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。二分类交叉熵:X = [[0.3, 0.7], [0.2,0.8]]Y = [1,0]Loss = -1/2(1*log0.7 + 1*log0.2)x代表样本等于下面的i......
  • 条件变量同步
    #include<thread>#include<iostream>#include"glock.h"#include"mylogger.h"externstd::mutexg_mtx;externstd::mutexg_mtx_main;externstd::condition_variablecvMain;externstd::condition_variablecvWorker;externin......
  • (十三)C#编程基础复习——函数/方法详解
    C#中的函数(也可以称为方法)是一段具有签名(由函数名、参数类型和参数修饰符组成的函数信息)的代码块,可以用来实现特定的功能。一般情况下一个函数由以下几个部分组成:访问权限修饰符:用于指定函数对一个类的可见性;(public  公开的,公共的,同一程序集的其他任何代码或引用该程序集的其......
  • 不会这5个Excel函数,别说你会做数据分析?
    当涉及数据分析时,Excel是一个非常有用的工具,而掌握一些核心函数将大大提高你在数据处理和分析方面的能力。以下是我对五个重要的Excel函数的详细介绍:1.VLOOKUP函数VLOOKUP函数是Excel中最常用的查找函数之一。它允许你在一个范围内搜索特定的数值,并返回该数值所在行的其他......
  • 14构造函数
    构造函数目标能够用构造函数创建对象构造函数一个特殊的函数,主要用来初始化对象在技术上是常规函数 不过有两个约定1.大写字母开头2.用new创建实例functionPig(uanme,age){this.uname=unamethis.age=age} newPig('佩奇',6)constobj=newObject()说明......
  • kotlin 内联函数 inline
    一、当函数被声明为内联函数(函数的前缀增加inline),那么函数体会被直接替换到函数被声明的地方,而不是被正常的调用。如下的代码inlinefunsynchronized(lock:Lock,action:()->Unit){lock.lock()try{returnaction()}finally{lock.unlo......