首页 > 其他分享 >函数声明会提升, 提升是整个函数体提升至当前作用域的顶层 函数表达式没提升

函数声明会提升, 提升是整个函数体提升至当前作用域的顶层 函数表达式没提升

时间:2023-11-16 14:37:11浏览次数:28  
标签:function console log 作用域 提升 fn 函数

下列选项中,能正确调用和运行函数的是()

A
(function(){

console.log(1);

})

B
fun();

function fun(){console.log(1)}

C
fn();

var fn = function(){console.log(1);};

D
var fn = new Function(a,console.log(a));

fn(1);

正确答案:B

A选项不会自动调用函数,若要调用函数,应改为(function(){console.log(1);})();
B选项,普通函数由于存在函数提升,所以可以调用和执行函数;
C选项,fn是匿名函数,必须先声明后调用;
D选项,使用new Function()创建函数对象时,其参数必须为字符串形式。

函数表达式和函数声明以及它们提升的区别
函数声明会提升, 提升是整个函数体提升至当前作用域的顶层
函数表达式没提升, 提升是提升变量(函数的引用),表达式留在原地

A.立即执行函数没加()调用,相当于只是输入函数名,返回整个函数体
(function(){
console.log(1);
})

B.函数声明整体函数提升至最前面
fun();
function fun(){console.log(1)}

//提升后
function fun(){console.log(1)}
fun(); //正常执行fun(),输出1

C. 函数表达式是先提升变量,后在原来位置赋值

fn();
var fn = function(){console.log(1);};

//实际上
var fn //提升变量
fn() // fn is not a function
fn = function(){console.log(1)} //原来的位置

D. a未定义,记得Function得传字符串来着..
var fn = new Function(a,console.log(a));
fn(1);//ReferenceError: a is not defined

标签:function,console,log,作用域,提升,fn,函数
From: https://www.cnblogs.com/longmo666/p/17836144.html

相关文章

  • 函数
    本章主要掌握函数的基本使用和递进1.函数是什么2.库函数3.自定义函数4.函数参数5.函数调用6.函数的嵌套调用和链式访问7.函数的声明和定义8.函数递进1.函数是什么?数学中我们常见到函数的概念。但是你了解C语言中的函数吗?维基百科中对函数的定义:子系统C语言的分类:1.库函数2.自定义......
  • 函数名其实就是指向函数体的指针
    D选项会立即执行:因为setTimeout()会先判断第一个参数是否为「function」,如果不是,则会尝试将它当作字串处理。换句话说,会将checkState()执行后的回传值转为字符串,没有回传值,那就是undefined,于是变成window.setTimeout(”undefined",10000)于是10000ms到了就什么事都没发生。se......
  • 无涯教程-Dart - clear()函数
    从Map上删除所有数据。clear-语法Map.clear()clear-示例voidmain(){Mapm={'name':'Learnfk','Id':'E1001'};print('Map:${m}');m.clear();print('Mapafterinvokingclear():${m}');......
  • var 声明变量的特点:没有块级作用域、存在变量提升 。没有块级作用域,使 var 声明的变量
    请问函数test最终输出的值是多少?vara=1;functiontest(){console.log(a);if(false){vara=2;}}test();A1B2CundefinedDnull正确答案:CJavascript分为预处理阶段和执行阶段,尽管if里面的语句不会被执行,但是在预处理阶段还是会将其提升......
  • 函数声明提升优先级高于变量声明提升; 提升就是声明(变量/函数)提至当前作用域的最顶
    执行以下程序,输出结果为()vara=2;functionfn(){b();return;vara=1;functionb(){console.log(a);}}fn();A1B2CundefinedD抛出异常正确答案:C虽然return语句可以终止函数,但是return语句后如果有变量和函数声明,仍然存在变量提升和函数提升......
  • 无涯教程-Dart - addAll()函数
    Map.addAll()函数将所有其他的键/值对添加到此Map。addAll-语法Map.addAll(Map<K,V>other)other-代表一个键值对。addAll-示例voidmain(){Mapm={'name':'Learnfk','Id':'E1001'};print('Map:${m}');m.add......
  • 二次函数、方程和不等式思维导图 | 高一新教材
    针对新人教版高一教材利用三个二次的关系求解二次不等式。前言使用方法:如果想得到更好的显示效果,可以点击全屏按钮,已经实现电脑端、手机端的适配,效果很好;电视端没有实现适配,Ipad端的适配没有测试;思维导图[全屏/Esc]......
  • 首先Function的显示原型prototype和隐式原型__proto__都是同一个 也就是说 构造函数和
    下列说法正确的是()A每个JS对象一定对应一个原型对象,并从原型对象继承属性和方法B对象的__proto__指向自己构造函数的prototypeCObject.prototype.proto===null,说明原型链到Object.prototype终止D表达式Function.prototype.proto.proto===null的运行结果为true正确......
  • 机器学习——注意力评分函数
    10.2节使用了高斯核来对查询和键之间的关系建模。 (10.2.6)中的高斯核指数部分可以视为注意力评分函数(attentionscoringfunction),简称评分函数(scoringfunction),然后把这个函数的输出结果输入到softmax函数中进行运算。通过上述步骤,将得到与键对应的值的概率分布(即注意力权重......
  • 在 let 的块作用域中无法重复声明,也无法在声明语句之前使用(没有变量提升)。简而言之,在
    以下代码执行时不会在控制台输出错误信息的是:Aleta=decodeURIComponent('%');Bvara;a();functiona(){console.log(a);}CPromise.reject(123).finally(a=>{console.log(a);});Dvara=1;leta=2;console.log(a);正确答案:B●首先,js有变量提升和函数......