- 定义函数的关键字:
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('你好,世界!')
关注公众号,免费刷快排。
转载请说明出处
奇点seo » js怎么调用函数-js的函数使用
奇点seo » js怎么调用函数-js的函数使用