首页 > 试题广场 >

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

[单选题]

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



  • (function(){

    console.log(1);

    })

  • fun();

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

  • fn();

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

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

    fn(1);

函数表达式和函数声明以及它们提升的区别

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

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

发表于 2021-12-12 19:03:59 回复(2)
Function 构造函数创建一个新的 Function 对象

语法

new Function ([arg1[,arg2[, ...argN]],]functionBody)
arg1, arg2, ... arg被函数使用的参数的名称必须是合法命名的。参数名称是一个有效的JavaScript标识符的字符串,或者一个用逗号分隔的有效字符串的列表;例如“×”,“theValue”,或“a,b”。
functionBody一个含有包括函数定义的 JavaScript 语句的字符串
发表于 2021-12-15 08:29:32 回复(0)
函数存在函数提升,且优先级比变量提升更高!
发表于 2022-08-30 21:21:50 回复(0)
JS引擎在解析代码时,会提升当前执行环境(作用域)上的函数声明,而函数表达式必须等到JS引擎执行到它所在行时,才会从上而下一行一行地解析函数表达式
发表于 2021-12-09 19:07:53 回复(0)
A.没有调用
B.函数声明提升
C.报错。由函数表达式定义的函数,运行到那一行才会有函数的定义
D.Function构造函数传参要使用字符串,
var fn = new Function('a','console.log(a)');

发表于 2022-07-21 16:11:40 回复(0)
C选项是fn变量声明提升,D选项传参a需要是字符串形式"a"
发表于 2022-06-23 11:01:49 回复(0)