js函数进阶

  1. 变量的作用域(空间有效范围)。
    在js中,只有全局作用域和函数作用域两种。 如果一个变量没有定义在任意函数之内,则为全局作用域。全局作用域是从声明位置开始, 一直到脚本结束。 定义在函数之内的变量,则为函数作用域。函数作用域从声明位置开始,到函数结束。函数 中的变量会覆盖全局的同名变量。函数参数也是属性函数作用域,其作用域从函数开始到函数结束。 在函数中,可以使用全局变量。
  2. 变量的定义提升。
    不管是在全局作用域中,还是在函数作用域中,使用var定义的变量,其定义默认会提升到脚本或 函数的前面。
  3. 变量的生命周期(时间作用域):
  4. 全局作用域变量:从执行到定义变量的位置开始,一直到脚本所有代码执行结束。 2. 函数作用域变量:从执行到定义变量的位置开始,一直到函数执行结束(return,要么所有代 码执行结束)。
  5. 匿名函数及函数表达式
    匿名函数:没有名字的函数,如果此函数仅在定义处使用,其它地方不会调用。
    在js中,变量,参数,函数的返回值,都可以是函数。 在js中,函数是一等公民。
  6. 递归调用(选讲)
  7. 一个函数,直接或间接调用自身。要想函数递归停止,必须在递归函数中设置退出条件。 规律: 1. 任何递归都可以转换为循环来实现,但是有的时候,使用递归更容易理解,更简单方便 。
  8. 有一些场景使用递归比较方便,使用循环则非常复杂。
  9. 函数参数的默认值。参数可以使用赋值表达式定义默认值。
  10. 函数的参数,难以保证是预期的数据类型,所以在函数逻辑之前,根据实际情况,需要对参数 类型进行判定或校验。
    参数规则
    JavaScript 函数定义显式参数时没有指定数据类型。
    JavaScript 函数对隐式参数没有进行类型检测。
    JavaScript 函数对隐式参数的个数没有进行检测。
    默认参数
    ES5 中如果函数在调用时未提供隐式参数,参数会默认设置为: undefined
    有时这是可以接受的,但是建议最好为参数设置一个默认值:
<p>设置参数的默认值。</p>
<p id="demo"></p>
<script>
function myFunction(x, y) {
    if (y === undefined) {
        y = 0;
    }    
    return x * y;
}
document.getElementById("demo").innerHTML = myFunction(4);
</script>
<body>

<p>设置参数的默认值。</p>
<p id="demo1"></p>
<p id="demo2"></p>
<script>
function myFunction(x, y = 10) {
    // 如果不传入参数 y ,则其默认值为 10
    return x + y;
}
// 输出 2
document.getElementById("demo1").innerHTML = myFunction(0, 2) ;
// 输出 15, y 参数的默认值
document.getElementById("demo2").innerHTML = myFunction(5);
</script>

</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值