//函数定义
function pow(a,b){
let temp = a;
while(–b){
a *= temp;
}
console.log(a);
}
//函数调用
pow(2,3)//2的3次方
pow(3,4)//3的4次方
pow(4,5)//4的5次方
执行结果如下:
这个案例清楚的演示了函数的最主要用途之一,即避免代码重复。
局部变量就是定义在函数{}
内部的变量,这些变量只能在函数内部才能使用。
例如,上节课中
for
语句里面的变量i
举个例子:
function doSomething(a,b){
let val = prompt(‘请输入点什么’,0);
console.log(val);
}
doSomething();
alert(val);//ERROR,这里不能使用val
执行结果如下:
由于变量val
是在函数内部定义的,只能在函数内部使用,外部不能使用函数内部定义的变量。
虽然,函数体外不能访问函数体内部定义的变量,但是反过来,函数体内部是可以访问函数体外部定义的外部变量的。
举个栗子:
let val = prompt(“请输入点什么”,9);
function doSomething(){
console.log(val);//使用函数体外的变量没有问题
}
doSomething();
代码执行结果如下:
用户输入的时候,输入了9
如果内部变量和外部变量具有相同的名字,那么会优先使用内部变量。
举个栗子:
let num = 1;
function doSomething(){
let num = 2;
console.log(num);//这里使用的是内部变量
}
doSomething();
代码执行结果:
如果一个变量声明在所有函数之外,那么这个变量就是全局变量
程序中声明过多的全局变量不利于程序的优化执行
函数体内部并非完全自治的,很多情况下还是需要一定的输入才能开始执行函数体代码,这个输入就是参数。
举个例子:
function bless(name,senc){
console.log(祝${name}${senc}
)
}
代码执行结果:
上例中我们为行数bless
传入了两个参数,分别是人名name
和祝福词senc
,这样就可以像任何人祝福任何话了。
如果我们在函数体内部修改变量,那么外部的变量是否会对应的变化呢?
举个例子:
let a = 1;
let b = 2;
function exchange(a,b){
let temp = a;
a = b;
b = temp;
}
console.log(a=${a},b=${b}
);
代码执行结果:
可以发现,外部变量a
和b
的值并没有改变。
造成这种现象的原因是,传入函数的参数是变量的副本,而不是变量本身。
在定义函数的时候,我们可以为传入的参数设定一个默认值,如果在调用函数的时候为提供参数,就会使用默认值代替。
举个例子:
function bless(name,senc=‘身体健康’){
console.log(祝${name},${senc}.
);
}
bless(‘特朗普’);
代码执行结果:
以上函数虽然需要两个参数,但是在调用的时候,传入一个参数并不影响使用,这是因为在定义函数的时候已经为senc
设定了默认值。
如果我们不为参数设定默认值,但是不传入对应参数会发生什么呢?
举个例子:
function bless(name,senc){
console.log(祝${name},${senc}.
);
}
bless(‘特朗普’);
代码执行结果如下:
可见,在不传递参数情况下,参数是undefined
。
如果在老版本的JavaScript
中如何使用参数默认值呢?
有两种方式:
- 使用
if
判断:
function doSomething(val){
if(val === undefined){
val = ‘default val’;
}
… …
}
- 使用
||
运算符
function doSomething(val){
val = val || ‘default val’;
… …
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
在面试前我花了三个月时间刷了很多大厂面试题,最近做了一个整理并分类,主要内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。
包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。
-
HTML5新特性,语义化
-
浏览器的标准模式和怪异模式
-
xhtml和html的区别
-
使用data-的好处
-
meta标签
-
canvas
-
HTML废弃的标签
-
IE6 bug,和一些定位写法
-
css js放置位置和原因
-
什么是渐进式渲染
-
html模板语言
-
meta viewport原理
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-的好处
-
meta标签
-
canvas
-
HTML废弃的标签
-
IE6 bug,和一些定位写法
-
css js放置位置和原因
-
什么是渐进式渲染
-
html模板语言
-
meta viewport原理
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-nAanocsE-1712672409871)]