JavaScript函数(2)

本文详细介绍了JavaScript的执行过程,包括预编译和执行阶段,强调了变量的作用域和声明提升的概念。同时,讨论了全局和局部变量的差异,并通过实例展示了变量在函数内的行为。此外,还探讨了事件调用函数的机制,如onload和onfocus等事件,以及递归函数的原理和编写方法。通过对这些基础知识的深入理解,有助于提升JavaScript编程技能。
摘要由CSDN通过智能技术生成

JavaScript的编译和执行
JavaScript的编译和执行:

javascript代码在运行时有预编译和执行两个阶段,在预编译阶段会对函数和变量进行处理,对所有的声明变量会赋值为undefined,对所有的声明函数也会赋值为函数的定义。 在执行阶段会按照代码顺序,一行行的翻译并执行代码。

var myname;
alert(myname);
myname=“小高”;
alert(myname);

变量的作用域
变量的作用域:就是变量起作用的范围。或者说有效范围。
局部变量

局部变量就是定义在函数内部的变量,这个变量只能在函数内部使用,即作用域范围只是函数内部,另外,形参也是局部变量。

全局变量

全局变量就是定义在函数外部的变量,这个变量在任何函数中都有效,即作用域范围是当前文件的任何地方。不但在任何函数中都可以使用,而且值是共享。即A函数改变值后,B函数拿到的就是改后的值。就像共享单车一样。

var num1=1; //全局变量,作用域是当前文件
function testf1(){
var num2=0; //局部变量,作用域仅在当前函数中
alert(num1); //1
alert(num2); //0 }
function testf2(){
alert(num1); //1
alert(num2); //undefinde, }

变量的声明提升

变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部 请注意,变量赋值并没有被提升,只是声明被提升了。

var num1=1; //全局变量,作用域是当前文件
function testf1(){
num1=2; //局部变量,声明被提升
var num1;
alert(num1); //2 }
function testf2(){
alert(num1); //全局变量1 } 案例3:变量的声明提升

事件调用函数

我们把事件和自定义函数建立起对应关系,当事件发生时就去调用我们的函数。 我们已经学习了onclick事件,还有onload, onfocus、onblur等等。
onload:标签(页面)加载完成(页面完全打开)
onfocus:获得焦点(简单理解为,光标进入)
onblur:失去焦点(简单理解为,光标离开)

递归函数

JavaScript函数可以相互调用,嵌套调用
JavaScript函数也能调用自己,调用自己的函数叫做递归函数,递归函数就是特殊的嵌套调用函数。
递归函数的调用是递的过程,递的是参数。
递归函数的返回过程是归的过程,归的是返回值。

编写递归函数
1,先用函数实现第一次的运算,假如num1=5,实现第一次运算就是54 num1(num1-1)

function nn(num1){
return num1*(num1-1);
} 

2,在函数内调用自己实现第二次运算,第二次运算就是4*3,调用原函数实现就是nn(4)

nn(num1-1)
function nn(num1){
return num1*nn(num1-1);
} 

3,第二步完成后基本递归框架已完成,最后编写退出递归的条件,当num1=1时就是计算的最后一步,直接返回1

function nn(num1){
if(num1==1){
return 1;
}
return num1*nn(num1-1);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值