当前位置: 首页 > news >正文

javascript day4

函数

函数:实现某一特定功能的代码的集合

作用:可以提高代码的高度复用

js函数声明

function 函数名([参数]){

函数体

}

function say_hi(){
alert("hello")
}//函数的声明
say_hi()//函数的调用

函数的声明,函数声明之后不会自动执行,想要执行需要进行函数的调用

paseInt()-----转整型

函数的参数

  

0----100 num1-num2

<script>
function he(num1,num2){
let sum=0
for(let i=num1;i<=num2;i++){
if(i%2==0){
sum+=i}}
return sum//返回值
}
he(100,200)
</script>

underfined:如果一个函数没有设置返回值,那么它的返回值就是underfined

return 返回值——只能返回出去一个值

函数中遇到return会立即退出函数。return后面的代码不会被执行

变量的作用域

变量名生效的范围

根据变量的作用范围,变量分为全局变量和局部变量

全局变量:在全局当中都可以使用的变量 

局部变量:在函数内部声明的变量,局部变量的作用域是在函数体内生效的,形参也可以看作是局部变量

块作用域

{}if for

作用域链

作用域就近原则——现在自身找若没有,再去上一级找

值传递和引用传递

原来数不会变,基本是占内存了

引用数据类型

栈内存:

基本数据类型实际数据存储在栈内存

引用数据类型实际数据存储在堆内存,栈内存存储的是堆内存的内存地址

函数作为参数进行传递

一个函数A作为另外一个函数B的参数,那么该函数A就叫做回调函数

<script>
function test(){
document.writeln("test1")
}
function test2(fn){
fn()
document.writeln("test2")
}
//函数后面带(),则立即执行
test2(test1)
</script>

在吧函数作为参数传递的时候一定不能带()

arr.forEach(回调函数)

默认值参数

默认值参数必须在普通参数后面

求圆面积的函数

<script>
function area(r,PI=3.14){
return PI*r*r
}
let a=area(2)
console.log(a)
</script>

可变长参数

求和函数

<script>
function get_sum(){
console.log(arguments)//arguments为伪数组
let sum=0
foe(let i in arguments){
sum+=arguments[i]
}
console.log(sum)
}
let a=get_sum()
</script>

匿名函数

没名字的函数

函数作为某个函数的参数——用匿名函数

<script>
let fn=function(){
alert("这是函数表达式")
}
</script>

箭头函数

是为了简化函数的写法,以及解决this关键字指向问题的

箭头函数不需要加return

<script>
let fn=()=>{
console.log(123)
}
fn()
</script>
<script>
let fn=(x,y)=>x+y
console.log(fn())
</script>

函数的递归

函数自身调用自身

求阶乘

<script>
function get_jiec(num){
//递归接口
if(num==1){
return 1
}else{
return get_jiec(num-1)*num
}
</script>

求累加和的函数

 <script>function get_lj(num){if(num==1){return 1}else{return get_lj(num-1)+num}}alert(get_lj(5))</script>

url编码decodeURI

url解码encodeURI

eval:跳转网页

闭包

闭包可以解决全局污染的问题,可以让函数当中的某个变量常驻在内存当中

如果一个函数使用了外层函数的局部变量,访问了其他作用域的变量,那么内层函数叫闭包

统计函数被调用的次数

<script>
function outer(){
let num=1
function inner(){//return num
console.log(num)
}
inner()
}
outer()
</script>
//全局变量容易被污染

改变不了num

缺点:若变量多,占用内存多

用闭包统计函数调用的次数问题

 <script>let num=1function outer(){let num1=0function inner(){num1++document.writeln(`这个函数调用了${num1}次了`)}return inner()}let a=outer()
a()
a()
a()</script>

数组的高级方法

<script>
let arr1=[1,2,3,4]let newarr=arr1.map((x)=>x=x*2)console.log(newarr)
</script>

回调函数——危险危险危险

reduce——返回总值

<script>
let arr1=[1,2,3,4]
let b=arr1.reduce(fuction(x,y){
alert(1)
return x+y
})
console.log(b)
</script>

filter()——创建新的数组

<script>
let arr1=[1,2,3,4]
let b=arr1.filter(function(n){
//console.log(n)
return n%2==0
})
console.log(b)
</script>

对象

存储数据的方式

声明对象——key : value,

<script>
let obj1={
uname:"zhangs",
age:21,
heighr:166,
sing:finction(){
console.log(sing)
}
}
//对象.属性
console.log(obi.uname)
//对象[key]
console.log(obj1["uname"])
obj1.sing("这是对象")
//手动改值——重新赋值
obj1.age=22
console.log(obj1.age)
//遍历对象 for in
for(let i in obj1){
console.log(obj1[i])
}
</script>

相关文章:

  • C语言之图像文件的属性
  • Java(自用查看版)
  • Towards Transferable Targeted 3D Adversarial Attack in the Physical World--阅读笔记
  • 头歌实训之连接查询
  • 【网络编程】从零开始彻底了解网络编程(二)
  • 【2025计算机网络-面试常问】http和https区别是什么,http的内容有哪些,https用的是对称加密还是非对称加密,流程是怎么样的
  • wordpress独立站的产品详情页添加WhatsApp链接按钮
  • 深入探索 Unix 与 Linux:历史、内核及发行版
  • 02_解决Class com.sun.tools.javac.tree.JCTree
  • 【失败总结】Win10系统安装docker
  • FTP客户端实现(文件传输)
  • DreamDiffusion的mae_for_eeg.py网络架构
  • 基于maven-jar-plugin打造一款自动识别主类的maven打包插件
  • [Spring]SSM整合
  • 游戏引擎学习第238天:让 OpenGL 使用我们的屏幕坐标
  • 基于Redis实现RAG架构的技术解析与实践指南
  • idea中运行groovy程序报错
  • 【perf】perf工具的使用生成火焰图
  • 基于 OpenCV 的图像与视频处理
  • Kubernetes(k8s)学习笔记(二)--k8s 集群安装
  • 中印尼举行外长防长“2+2”对话机制首次部长级会议
  • 沈辛成评《主动出击》丨科学普及,究竟需要靠谁主动出击
  • 由“环滁皆山”到“环滁皆景”,滁州如何勾勒“文旅复兴”
  • 红十字国际委员会加沙地带办公场所再次遭袭
  • 碳访|储能行业将迎市场化考验,宁德时代:我们希望“卷价值”
  • 履新荆州市委书记次日,汪元程走访看望老同志