资讯专栏INFORMATION COLUMN

javastript函数

Jaden / 2750人阅读

摘要:对匿名函数的理解报错不能直接使用。对匿名函数的理解报错匿名函数必须依附一个变量。对匿名函数的理解追梦子追梦子同样的匿名函数当做一个对象的属性时也可以自调用。如果没有名字必须要有一个依附体,如将这个匿名函数赋值给一个变量。

走在前端的大道上

匿名函数

从简单的字面理解就是一个没有名字的函数,但是如果说它只是这样简单,那我也就没有必要来说这些。

对匿名函数的理解1:
function(){
    console.log(1); 
}
// 报错

不能直接使用。

对匿名函数的理解2:
var a = function(){
    console.log(1);
}
a(); //1

匿名函数可以依附于一个变量,并且这个变量名就是这个匿名函数的名字。

var a = function(){
    console.log(1);
}
console.log(typeof a); //function
对匿名函数的理解3:
window.onload = function(){
    console.log("匿名函数");
}
// 匿名函数

当匿名函数用在绑定事件中的时候,当这个事件执行的时候这个匿名函数也会被执行。

对匿名函数的理解4:
(function(){
    console.log("追梦子");
})()
// 追梦子

如果将匿名函数放入到表达式中并且后面加上小括号会自动执行这个函数

对匿名函数的理解5:
var a = function(){
    console.log("自执行函数");
}();
// 自执行函数

匿名函数后面加括号会执行这个函数。

对匿名函数的理解6:
function(){
    console.log(1);
}();
// 报错

匿名函数必须依附一个变量。

对匿名函数的理解7:
var a = {
    fn:function(){
        console.log(1);
    }
}
a.fn(); //1

匿名函数不只是可以依附于一个变量,也可以依附于一个对象的属性。

对匿名函数的理解8:
var a = {
    fn:function(){
        console.log("追梦子");
    }()
} //追梦子

同样的匿名函数当做一个对象的属性时也可以自调用。

对匿名函数的理解9:
var a = function(b){
    console.log(b)
}
a(52); //52

匿名函数也可以传递参数

对匿名函数的理解10:
(function(a){
    console.log(a);
})(10) //10

对于表达式函数同样也可以传递参数

对匿名函数的理解11:
var a = function(b){
    console.log(b);
}(10); //10
console.log(a); //undefined

如果将一个自执行的匿名函数并且没有返回值,赋值给一个变量那么这个变量的值就是undefined。因为这个函数在赋值之前已经执行完了,而这个函数没有返回值,所以就是undefined,如果有返回值,那么这个变量的值就是那个匿名函数的返回值。

var a = function(b){
    return b;
}(10);
console.log(a); //10
自执行的匿名函数

why?为什么下面这段代码会报错?

function(){
    console.log(1);
}
// 报错

  1、因为ECAMScript规定函数的声明必须要有名字,如果没有名字的话,我们就没有办法找到它了,对于为什么自执行函数为什么就可以不带名字后面会讲。

  2、如果没有名字必须要有一个依附体,如:将这个匿名函数赋值给一个变量。

如果按照上面的说法js报错也是应该的,那么我们用的下面这种代码为什么就能够正常运行?

(function(){
    console.log(1);
})() //1

  之所以可以是因为我们将这个函数包含在了一个小括号中,why?小括号为什么这么神奇?

按照ECAMScript的规定,函数声明是必须要有名字的,但是我们用括号扩起来那么这个函数就不再是一个函数声明了,而是一个函数表达式,你可以理解成下面这段代码。

var a = function(){
    console.log(1);
}(); //1

  将一个匿名函数赋值给一个变量或者对象属性就是函数表达式,函数表达式是可以不需要名字的,所以我们就可以直接通过这种方式来自动的执行这个函数。

再说一句

(function(){
    ....
})()

第一个括号是个运算符,它会返回这个匿名函数,然后最后一个小括号会执行这个函数。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92242.html

相关文章

  • JavaScript面向对象编程——Function类型

    摘要:在中,函数也是以对象的形式存在的。也可以使用对象作为参数返回值调用该函数的返回结果。调用自身的函数被称之为递归函数。默认名字的函数被称之为匿名函数。内部函数在函数中声明内嵌函数,内嵌函数对函数中的局部变量进行访问。 Function类型 Function与函数 函数它只定义一次,但可能被执行或调用多次 。Function类型是JavaScript提供的引用类型之一,通过Function...

    Object 评论0 收藏0
  • JavaScript...Function类型...

    摘要:类型与函数函数是这样一段代码它只定义一次但可能被执行或调用多次类型是提供的引用类型之一通过类型创建对象在中函数也是以对象的形式存在的每个函数都是一个对象函数名本质就是一个变量名是指向某个对象的引用函数声明方式字面量方式判断函数是否为类型的中 Function类型 Function与函数 函数是这样一段JavaScript代码 它只定义一次 但可能被执行或调用多次Function类型是J...

    Eirunye 评论0 收藏0
  • js函数探索

    摘要:关于构造函数有几点需要特别注意构造函数允许在运行时动态的创建并编译函数。而函数本身的表示该函数的形参。每一个函数都包含不同的原型对象,当将函数用作构造函数的时候,新创建的对象会从原型对象上继承属性。 该文章以收录: 《JavaScript深入探索之路》 前言 函数是这样的一段JavaScript代码,它只定义一次,但是可能被执行或调用任意次。你可能已经从诸如子例程或者过程这些名字里...

    thursday 评论0 收藏0
  • 论普通函数和箭头函数的区别以及箭头函数的注意事项、不适用场景

    摘要:第二种情况是箭头函数的如果指向普通函数它的继承于该普通函数。箭头函数的指向全局,使用会报未声明的错误。 showImg(https://segmentfault.com/img/remote/1460000018610072?w=600&h=400); 箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API...

    paulquei 评论0 收藏0
  • JavaScript 之 面向对象 [ Function类型 ]

    摘要:类型描述在中的所有函数都是类型的对象定义函数的方式函数声明方式函数名函数体函数声明方式定义函数函数声明方式显示函数声明方式字面量方式函数名函数体字面量方式定义函数字面量方式显示字面量方式构造函数方式函数名参数,函数体函数的参数和函数体,都以 Function类型 描述 在JavaScript中的所有函数都是Function类型的对象 定义函数的方式 函数声明方式 function 函数...

    AprilJ 评论0 收藏0

发表评论

0条评论

Jaden

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<