2024年Web前端最全js-函数-学习笔记(1),flutter音视频开发

本文介绍了JavaScript函数的形参与实参匹配规则,返回值的概念,以及作用域和预解析原理。重点讨论了arguments对象的使用和变量提升现象。同时提及了前端面试常涉及的知识点,如HTML、CSS、Vue等。
摘要由CSDN通过智能技术生成

❤️ 谢谢支持

喜欢的话别忘了 关注、点赞哦~。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端校招面试题精编解析大全

//函数执行代码

}

func(实参1,实参2);//调用时传参

形参是接受实参的,相当于一个不用声明变量

2.1:当形参和实参不匹配的情况

  • 实参的个数大于形参的个数

会取到形参的个数,实参后面多出来的就不要了

  • 实参的个数小于形参的个数

结果都是NaN

2.2:返回值

function 函数名(){

return 需要返回的结果;

}

函数名();

注意点:

  1. 只要函数遇到return 就把return后面的结果 返回给函数的调用者 也就是说:函数名()=return后面的结果

  2. return终结函数:当代码执行到return时,其后面的代码就不会执行了,不仅可以退出循环,还能够返回return中的值,同时还可以结束当前函数体内的代码

  3. 如果没有return则返回的是undefined

  4. return只能返回一个值。如果用逗号隔开多个值,以最后一个为准. 如果需要返回多个值,就用数组的写法,返回的是数组的形式

return[ num,num1,num2];

3、arguments

==========================================================================

arguments 是用来获取参数的,arguments对象中存储的是传递的所有实参 是函数内置好的对象,直接拿来用。是一个伪数组

这里给大家讲解哈什么事伪数组

1、具有数组的length的属性;

2、按照索引的方式进行存储的;

3、它没有真正数组的一些方法:pop()、push()。。

举例:可以看出arguments里面存放的是一组实参

function a() {

console.log(arguments);

}

a(1,2,3);

在这里插入图片描述

一般可以按照数组的方法遍历arguments

在这里插入图片描述

4、作用域和预解析

========================================================================

预解析常常是面试会问的问题

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”);

}

`

最后

我可以将最近整理的前端面试题分享出来,其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器、数据结构与算法等等,还在持续整理更新中,希望大家都能找到心仪的工作。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

篇幅有限,仅展示部分截图:

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值