js怎么调用函数-js的函数使用

函数使用

  • 定义函数的关键字:function
  • 函数的调用可以出现在函数之前
  • 函数名不要重复,虽然不会报错,但是后者会覆盖前者
  • 函数可以像普通变量一样使用(赋值、打印)
  • 函数就是一种特殊的对象,可以使用new Function()进行创建
  • 函数的参数:可以有默认值、可以不传、可以多传
  • 自调用函数(封闭空间):本质就是一个立即执行的匿名函数
    var c = (function (a, b) {
        return a+b
    })(3, 5)
    
    console.log(c)

    作用:既可以让特定的内容作为一个整体执行,又不失功能的灵活性。

  • 闭包使用(其实就是具有执行环境的函数)
    function wai()
    {
        var i = 0
        function nei()
        {
            i++
            console.log('内部函数', i)
        }
        // 函数作为返回值返回
        return nei
    }   
    
    // f1就是闭包
    var f1 = wai()
    f1()
    f1()
    
    var f2 = wai()
    f2()
    f2()
  • 变量作用域
    • 块级作用域:JS中没有块级作用域
    • 全局作用域:定义在函数外面的变量拥有全局作用域
    • 局部作用域:定义在函数内部的变量只能在函数内部使用
    • 示例:
    if (true) {
        var a = 250
    }
    // 代码块内部定义的变量外部可以使用,说明没有块级作用域
    a = 20
    console.log(a)
    
    // 全局变量:拥有全局的作用域
    var name = 'dahua'
    
    function test()
    {
        // 可以使用
        console.log(name)
        // 可以更改
        name = 'ergou'
    }   
    
    test()
    console.log(name)
    
    function demo()
    {
        // 局部变量:只能在函数内部使用
        var age = 18
        // 不使用var定义的变量默认是全局变量,即使是在函数内部执行
        // 强烈不建议这样使用
        xxx = 250
    }
    
    // 局部变量不能再函数外部使用
    // console.log(age)
    demo()
    console.log(xxx)

函数调用

  • 执行环境:函数的执行都是有上下文的(环境)
    var name = 'dahua'
    
    console.log(name)
    console.log(window.name)
        
    function func1()
    {
        // this表示当前函数执行的环境对象,类似于python中的self
        console.log(this.name)
    }
    
    func1()
    // 函数的执行默认都是在window对象下
    window.func1()
  • 指定环境:通过call|apply方法执行函数可以指定执行环境
    function func2(a, b)
    {
        console.log(this.name)
        console.log(a, b)
    }
    
    // func2(3, 5)
    // 参数1:给函数的执行传递的环境(对象),也就是函数中的this指向
    // 其他参数:就是传递给函数的参数
    func2.call({name: 'ergou'}, 3, 5)
    
    // 参数1:给函数的执行传递的环境(对象),也就是函数中的this指向
    // 参数2:传递给函数的数组参数,与call类型,只是类型不同
    func2.apply({name: 'xiaowang'}, [5, 8])
  • 绑定环境:通过bind方法先绑定函数的执行环境,然后再调用就不用关心执行环境了
    // 绑定执行环境:bind函数会生成一个新的函数,无论何时执行环境都是绑定的这个
    // 类似于Python中的偏函数
    var func3 = func2.bind({name: 'xiaofang'})
    func3(2, 4)
    
    // 向文档中写入内容
    // document.write('Hello world!')
    
    var docwrite = document.write
    // docwrite('Hello world!')
    docwrite.call(document, 'Hello world!')
    
    // 先绑定环境,然后执行
    var docwrite_bind = document.write.bind(document)
    docwrite_bind('你好,世界!')

发表评论 X

电子邮件地址不会被公开。 必填项已用*标注

姓名不能为空
填写正确的email