1.下列选项中,能正确调用和运行函数的是(B)
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);
解析:A不会自动调用函数,若要调用函数,应改为(function(){console.log(1);})() 立即调用的匿名函数.
B、函数声明提升,可以调用和执行函数
C、函数表达式需先赋值再使用
D、new Function()创建函数对象时,其参数必须为字符串形式。
注意:定义函数的两种方式:函数声明和函数表达式。
JavaScript引擎在任何代码执行之前,会先读取函数声明,并在执行上下文中生成函数定义。而函数表达式必须等到代码执行到它那一行,才会在执行上下文中生成函数定义。
2.以下代码执行后, num 的值是?(A)
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
解析:
理解声明提升!!!JavaScript在任何代码执行之前,会先读取函数声明/变量声明,并在执行上下文中,生成函数定义。
函数表达式无法提升。
函数提升优先级高于变量提升,且不会被同名变量声明时覆盖,但是会被同名变量赋值后覆盖。
即JavaScript编译的代码如下:
//函数声明提升
function foo(x, y){
return x + y;
}
//变量声明提升
var foo;
var num;
foo =function(x, y){
return x - y;
}
num = foo(1, 2);
3.请问以下JS代码的输出结果以及变量i的值是?(B)文章来源:https://www.toymoban.com/news/detail-649293.html
var i = 100;
function foo() {
bbb: try { //1.进入代码块
console.log("position1"); //2.弹出position1
return i++; } //3.此处的i自增1,i=101 return失效,但执行了此语句,然后进入finally
finally {
break bbb; //4.跳出bbb标签代码块
}
console.log("position2"); //5.弹出position2
return i; //6.return的i=101 由3,哪怕没返回但确实执行了该return语句
}
foo();
A.position1、position2、100
B.position1、position2、101
C.position1、101
D.100
解析:
finally 语句无论 try 和 catch 执行结果如何都会执行(return,break之类的失效)
break跳出循环:
1)当break语句用于switch语句时,会跳出switch代码块,终止执行switch代码。
2)当break语句用于循环语句时,会跳出整个循环,不再执行后续剩余的循环。
3)注意break与continue的区别:continue会跳出本轮循环,继续执行后续剩余的循环
break跳出标签指向的代码块.
注意:1.try{}或catch(){}块里若有return,finally{}里没有return语句,
①则先执行return语句,但不返回
②执行finally语句中全部代码
③执行try{}或catch(){}里的return返回
2.finally{}里有return语句,在finally里返回return,不需要再执行try{}或catch(){}里的return。文章来源地址https://www.toymoban.com/news/detail-649293.html
到了这里,关于函数的知识点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!