2.2:返回值
function 函数名(){
return 需要返回的结果;
}
函数名();
注意点:
-
只要函数遇到return 就把return后面的结果 返回给函数的调用者 也就是说:函数名()=return后面的结果
-
return终结函数:当代码执行到return时,其后面的代码就不会执行了,不仅可以退出循环,还能够返回return中的值,同时还可以结束当前函数体内的代码
-
如果没有return则返回的是undefined
-
return只能返回一个值。如果用逗号隔开多个值,以最后一个为准. 如果需要返回多个值,就用数组的写法,返回的是数组的形式
return[ num,num1,num2];
==========================================================================
arguments 是用来获取参数的,arguments对象中存储的是传递的所有实参 是函数内置好的对象,直接拿来用。是一个伪数组
这里给大家讲解哈什么事伪数组
1、具有数组的length的属性;
2、按照索引的方式进行存储的;
3、它没有真正数组的一些方法:pop()、push()。。
举例:可以看出arguments里面存放的是一组实参
function a() {
console.log(arguments);
}
a(1,2,3);
一般可以按照数组的方法遍历arguments
========================================================================
预解析常常是面试会问的问题
4.1:作用域
概念:就是代码名字在某个范围内起作用和效果。
目的:是为了提高程序可靠性,减少命名冲突
局部作用域,也叫做函数作用域,这个代码在函数内部起作用;
局部作用域 , 整个script标签 或者是一个单独的js文件
变量作用域根据作用域划分为:全局变量、局部变量 没有块级作用域
全局变量
全部变量只有浏览器关闭的时候才会销毁,比较占用内存
特殊情况:
如果在函数内部没有声明直接赋值的变量也是全局变量
比如:var a = b = c =9;
相当于var a=9;
b=9;
c=9; 则b和c是全局变量
局部变量
局部变量在函数内部使用,当函数结束就会被销毁,更节省内存空间
函数的形参也可以当作局部变量
作用域链:内部函数访问外部函数的变量 利用链式查找变量 (就近原则)
4.1:预解析
之前我们提到js有一个解释器来解释并执行我们的代码,这个解释器就是 预解析加代码执行
预解析定义:js引擎会把js里面所有的var还有function提至到当前作用域的前面,变量提升只是将我们的变量声明提升 值不提升
代码执行:按照代码书写的顺讯从上往下执行
-
var在预解析时,会把声明提升到最前边(赋值前打印返回undefined)。只提升声明,不会把赋值过程进行提升。
-
function的函数体在预解析时,会把整个函数体提升至最前边。(函数体:function fn(){ console.log(1);})
-
函数表达式(函数表达式:var fn = function(){};)只会提升函数表达式的声明,不会执行(真正执行函数表达式前调用会返回undefined)
-
在预解析时,会先预解析var(包括变量声明和函数表达式的变量声明),把var放在最前面,然后再预解析function,所以当var和function重名时,function会覆盖var;
/*
解析过程:先预解析var声明的a,再预解析函数体a,后面覆盖前面,所以最后结果是function函数体
var a;
function a(){console.log(“函数a”);};//此函数体解析后会覆盖变量a
*/
console.log(a);
var a = 0;
function a(){
console.log(“函数a”);
}
`
//原代码
var num = 1;
function demo() {
console.log(num);
function demoSon() {
num = 3;
}
var num = 2
demoSon();
}
demo(); //结果是 undefined
/* 预解析后
var num;
最后
由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
[外链图片转存中…(img-FV5ovuet-1714308034124)]
[外链图片转存中…(img-M0SZouJ0-1714308034125)]