首页 / 知识
深入分析JS函数
2023-04-11 15:13:00
函数声明和函数表达式有什么区别(*)
函数声明:functionbar(){}
函数表达式:varfuc=foo(){}
1.函数bar将会在整个程序执行前被hoist(提升),因此它在定bar函数的整个scope(作用域)中都是可用的。即使在函数定义之前调用它也没问题。
2.对于函数声明,函数的名称是必须的,而对于函数表达式而言则是可选的,因此,就出现了匿名函数表达式和命名函数表达式。
3在这个函数里
varfoo=functionbar(){
bar();//Works};
bar();//ReferenceError命名函数bar赋值给了变量foo,所以在函数声明外是不可见的,但在bar`函数内部仍然可以调用。这是因为Javascript对命名函数处理的机制,函数的名称永远在函数内部的作用域中有效。
什么是变量的声明前置?什么是函数的声明前置(**)
所谓的变量声明前置就是在一个作用域块中,所有的变量都被放在块的开始出声明。下面通过三段代码举例:
代码1:
vara=1;
functionmain(){
console.log(a);//1
}
main();//输出1`
代码2:
1vara=1;
2functionmain(){
3console.log(a);
4vara=2;
5}
6main()//输出undefined
代码3:为什么代码2会输出undefined
1vara=1;
2functionmain(){
3vara;
4console.log(a);
5a=2;
6}
函数的声明前置就是把整个函数提升到当前作用域的最前面(位于前置的变量声明后面)。
varnum=1;
console.log(doubleNum(num));//2
functiondoubleNum(num){returnnum2;}
等价于
//函数的声明前置
varnum;
functiondoubleNum(num){returnnum2;}
num=1;
console.log(doubleNum(num));//2
arguments是什么(*)
arguments是一个类数组对象。代表传给一个function的参数列表。可以在函数内部通过使用arguments对象来获取函数的所有参数。这个对象为传递给函数的每个参数建立一个条目,条目的索引号从0开始。
函数的重载怎样实现(**)
可以通过arguments的length和参数的类型来实现。例:
functionsumOfSquares(a,b,c){
if(arguments.length<3){
c=0;
}
returnaa+bb+c*c
}
sumOfSquares(2,3,4);//29
sumOfSquares(1,3);//10
立即执行函数表达式是什么?有什么作用(***)
立即执行函数通常有下面两种写法:
(function(){...})();
(function(){...}());//推荐使用
在Javascript中,一对圆括号“()”是一种运算符,跟在函数名之后,表示调用该函数。
参考-JavaScript中的立即执行函数
什么是函数的作用域链(****)
作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期,在JavaScript中变量的作用域有全局作用域和局部作用域。
作用域链是当代码在一个环境中执行时,会创建变量对象的一个作用域链(scopechain,不简称sc)来保证对执行环境有权访问的变量和函数的有序访问。作用域第一个对象始终是当前执行代码所在环境的变量对象(VO)
本文转载自中文网 |
最新内容
相关内容
python中函数怎么表示?
python中函数怎么表示?,名称,标准,培训,代码,函数,圆括号,字符串,表达式,选择性,自变量,python中函数定义规则:·函数代码块以def关键词开头,后python怎么找出所有的数字?
python怎么找出所有的数字?,数字,培训,代码,小数点,小数,字符串,整数,表达式,含义,思路,python中获取字符串中所有数字的方法:1、使用正则表达python如何去空格和回车?
python如何去空格和回车?,培训,空格,方法,字符串,两端,以上,更多,内容,python去掉空格和回车的方法:1、使用strip()、lstrip()、rstrip()等python函数里面形参和实参一样吗?
python函数里面形参和实参一样吗?,培训,函数,参数,里面,变量,实际,形式,全称,示例,后面,python函数里面形参和实参不一样。形参全称是形式参python为什么不适合web开发
python为什么不适合web开发,平台,培训,一致,环境,代码,技术,业务,性能,虚拟机,进程,python不适合web开发的原因:1、性能堪忧。写个httpserver怎么查看python模块在什么位置
怎么查看python模块在什么位置,位置,代码,培训,模块,路径,下面,以上,文件,方法,更多,查看python模块在什么位置的方法:若要获取模块的文件名为python中的int是什么意思?
python中的int是什么意思?,数字,数据,培训,字符串,参数,语法,实例,以下,方法,函数,python中的int()函数用于将一个字符串或数字转换为整型。python和php学哪个做web开发好
python和php学哪个做web开发好,数据,较大,技术,培训,代码,市场,人工智能,行业,份额,网站,不少打算学编程的学生,想从事web开发行业,但是对于webdef在python中是什么?
def在python中是什么?,名称,代码,培训,函数,圆括号,参数,表达式,选择性,字符串,自变量,def在python中的意义:自定义一个函数你可以定义一个由Python库与模块的区别是什么?
Python库与模块的区别是什么?,名称,概念,标准,机构,培训,名字,代码,模块,区别,函数,python库与模块的区别是:模块、库主要区别在于他们的定义Python测试有什么用途
Python测试有什么用途,平台,工具,代码,官网,软件,培训,系统,人员,工作,测试,Python测试用途如下:1、使用Python+Selenium实现web端的UI自动化Spython为什么不显示none
python为什么不显示none,信息,培训,赋值,参数,变量,方法,数据类型,函数,对象,语句,下面是关于Python中None的一些解释:None是一个特殊的常量。