关于函数function

函数的最后一句默认return undefined,写不写都会默认return undefined

function fn(x){
    console.log('接收到一个参数')
}
fn('dfsffd')//接收到一个参数
fn()//接收到一个参数
fn('')//接收到一个参数
fn(function(){})//接收到一个参数
function fn(x){
    if(typeof x!=='function'){
        console.log('接收到的参数不是函数')
        return false
    }else{
        console.log('接收到的是函数')
        return true
    }
}
fn('dfsffd')//接收到的参数不是函数 false
fn()//接收到的参数不是函数 false
fn('')//接收到的参数不是函数 false
fn(function(){})//接收到的是函数 true
function fn(x){
    if(typeof x!=='function'){
        console.log('接收到的参数不是函数')
        return false
    }else{
        console.log('接收到的是函数')
        x()//或x.call(),如果此处都不加(),则是把‘console.log('haha')’丢到内存中,并未执行它
        console.log('并且一句执行了该函数')
        return true
    }
}
fn(function(){console.log('haha')})
//是函数
//haha
//并且一句执行了该函数
//true
function fn(x){
    x(123)
}
fn(function(){
    console.log(arguments)
})
//Arguments [123, callee: ƒ, Symbol(Symbol.iterator): ƒ]
//0:123
//callee:ƒ ()
//length:1
//Symbol(Symbol.iterator):ƒ values()
//__proto__:Object

/*x就是
function(){
    console.log(arguments)
}
x的参数就是
function(){
    console.log(arguments)
}
的参数。arguments就是函数在执行时候接收到的参数*/

换个更直观的方法如下:

function fn(x){
    x(123)
}
fn(function(num){
    console.log(num)
})
//123

综上所述,做个foreach的小例子吧,如下:

//打印数组每项成员及其下标
function foreach(arr,x){
    for(i=0;i<arr.length;i++){
        x(arr[i],i)
    }
}
foreach(['apple','banana','pear'],function(value,key){
    console.log(value,key)
})
//apple 0
//1 banana 1
//pear 2

直接用数组的forEach方法实现如下:

(forEach接收1个函数,函数接2个参数,第一个参数是数组的value,第二个是数组的key)
var a = ['apple','banana','pear']
a.forEach(function(x,y){
    console.log(x,y)
})
//apple 0
//banana 1
//pear 2
a.forEach(function(){}) === a.forEach.call(a,function(){})
//true

实际上forEach是接收2个参数的,一个为自己,另一个为函数,如下例子帮助理解

var obj ={0:'a',1:'b',2:'c',length:'3'}
obj.forEach = function(x){
    for(i=0;i<obj.length;i++){
        x(this[i],i)//this 即为obj
    }
}
obj.forEach(function(value,key){
    console.log(value,key)
})
//a 0
//b 1
//c 2
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,876评论 0 4
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,206评论 0 5
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,738评论 0 13
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,721评论 0 21
  • 盈暖三月,又是樱花烂漫时,抑制不住内心的看花冲动,原来家楼下马路边浪漫樱花早就挂满枝头。 我们总是向往远方的...
    雕刻时光wm阅读 2,910评论 0 0

友情链接更多精彩内容