首页 > 其他分享 >变量提升,声明提升,函数表达式不提升。最后执行匿名函数; 用function定义的函数声明会直接提升到最顶层(区分函数表达式)

变量提升,声明提升,函数表达式不提升。最后执行匿名函数; 用function定义的函数声明会直接提升到最顶层(区分函数表达式)

时间:2023-11-15 12:56:57浏览次数:31  
标签:function return 函数 提升 var foo 表达式

以下代码执行后, num 的值是?

var foo=function(x,y){
    return x-y;
}
function foo(x,y){
    return x+y;
}
var num=foo(1,2);

A
-1

B
3

C
1

D
2

正确答案:A

选A。该题考察的是JS解析顺序。
根据题干:
匿名函数,需要通过变量引用指向函数的运行结果。
var foo=function(x,y){
//赋值式函数 return x-y;
}

有名函数,可以单独定义。
function foo(x,y){
//声明式函数 return x+y;
}

实际调用 var num=foo(1,2); //调用赋值式函数 return x-y 为 -1

变量提升,声明提升,函数表达式不提升。最后执行匿名函数

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

考点:函数提升、变量提升

//实际代码过程如下:
function foo(x,y){ //函数是一等公民,
return x+y; //用function定义的函数声明会直接提升到最顶层(区分函数表达式)
}
var foo; //函数表达式中的变量提升
var num; //普通变量的变量提升
foo = function(x,y){ //赋值后此时foo是这个函数,不是最上面的那个了
return x-y;
}
num = foo(1,2);

js预解析机制,

js会预解析var和function这两个关键字,并给var赋值undefined,即

标签:function,return,函数,提升,var,foo,表达式
From: https://www.cnblogs.com/longmo666/p/17833571.html

相关文章

  • 箭头函数表达式的语法比函数表达式更简洁,并且没有自己的 this、arguments、super 或 n
    请问以下JS代码最终输出的结果和num值分别是多少?vartest=(function(){varnum=0return()=>{returnnum++}}())for(vari=0;i<20;i++){test()}console.log(test());A20、20B20、21C21、21D21、20正确答案:Btest函数的作用就是......
  • 无涯教程-Dart - isEmpty函数
    如果字符串为空,则返回true;否则返回false。isEmpty-语法String.isEmptyisEmpty-示例voidmain(){Stringstr="Learnfk";print(str.isEmpty);}它将产生以下输出-。False参考链接https://www.learnfk.com/dart-programming/dart-programming-string-p......
  • 闭包函数:1.函数内部定义函数 2.内部函数使用了非它作用域的参数。
    执行以下程序,输出结果为()functionouter(){varnum=0;functioninner(){num++;console.log(num);}returninner;}varf1=outer();f1();f1();varf2=outer();f2();f2();A1234B111......
  • 无涯教程-Dart - codeUnits函数
    返回给定字符串的UTF-16代码单元的列表。codeUnits-语法String.codeUnitscodeUnits-示例voidmain(){Stringstr="Hello";print(str.codeUnits);}它将产生以下输出-[72,101,108,108,111]参考链接https://www.learnfk.com/dart-programming/dart-......
  • 实例讲解数据库的定义重载函数
    本文分享自华为云社区《GaussDB数据库SQL系列-定义重载函数》,作者:Gauss松鼠会小助手2。一、前言在本文中,我们将介绍GaussDB数据库中的用户定义函数重载的概念、用法以及示例。用户定义函数是SQL中常用的“编程工具”,允许我们自定义函数来处理和操作数据。而函数重载则是指在......
  • 损失函数---训练集降低,验证集升高
     损失函数在训练集下降而在验证集上升,通常被称为过拟合(overfitting)的现象。这意味着模型在训练数据上表现得很好,但在新的、未见过的数据上表现较差。过拟合可能是由于模型过于复杂,以至于学到了训练数据中的噪声或细微特征,而这些特征在验证数据中并不普遍存在。 我通过降低学......
  • 实例讲解数据库的定义重载函数
    本文分享自华为云社区《GaussDB数据库SQL系列-定义重载函数》,作者:Gauss松鼠会小助手2。一、前言在本文中,我们将介绍GaussDB数据库中的用户定义函数重载的概念、用法以及示例。用户定义函数是SQL中常用的“编程工具”,允许我们自定义函数来处理和操作数据。而函数重载则是指在一个......
  • 无涯教程-Dart - truncate函数
    丢弃任何小数位后返回整数。truncate-语法Number.truncate()truncate-返回值返回不带小数点的int。truncate-示例voidmain(){doublen1=2.123;varvalue=n1.truncate();print("Thetruncatedvalueof2.123=${value}");}它将产生以下输出-......
  • 常用的 Cron 表达式
    0010,14,16**?每天上午10点,下午2点、4点00/309-17**?朝九晚五工作时间内,每半小时0012?*WED表示每个星期三中午12点0012**?每天中午12点触发01510?**每天上午10:15触发01510**?每天上午10:15触发01510**?*每天上午......
  • SQL中的取整函数
    SQL中的取整函数FLOOR、ROUND、CEIL、TRUNC、SIGN(2009-12-2917:13:12)标签:整函数fromabs小数点绝对值教育分类:02.数据处理1trunc(value,precision)按精度(precision)截取某个数字,不进行舍入操作。2round(value,precision)根据给定的精度(precision)输入......