JavaScript_个人笔记10_由一个JS语法错误想到的

    
function (data){
            	console.log(data);
            }(000)

这个JS片段是错误的,为什么错误呢?

1 显然前面部分有个function关键字,且没有函数名称,那么这个肯定就不是一个函数声明了。

2 没有函数名称的函数就是一个表达式?错! 这个只能说是一个匿名函数。

3 由于匿名函数是执行时才创建的,那么匿名函数的出现肯定需要作为一个表达式出现的。

4 如何将一个匿名函数变为一个函数表达式呢?等等,后面的(000)是什么情况,其实这个表达式的存在是不影响前面的分析的,因为js是遇到错误就会停下来的,所以,前面的问题没有搞定,后面的无论对错都不会执行了,所以也就不用管了。因为目前

function (data){
            	console.log(data);
            }
这个是有语法错误的。

5 将函数转换为一个表达式?

  1)  等号 =    比如 window.onload = function (){} ; 右侧的函数就是一个标准的匿名函数了,一个赋值操作符=就将匿名函数变为右值表达式,这个也最常见的用法

  2)  加号,减号 (+,-)    +/- function(data){}

  3)逗号  1,function(){}  由于逗号有一个作用就是隔开表达式的,这里就可以这样用了

  4)  括号 (function(){}) 

  由于匿名函数是没有名称,或者说函数表达式其实是没有函数名称的,那么 2,3,4虽然不报错,那么就是一个表达式,基本没有什么用,说白了就是创建了一下这个匿名函数,还没有执行!!(不知道JS会不会对这种进行优化,即不创建,毕竟创建了也没有什么用)

6  使用5中的2,3,4几种方式,有了一个表达式了,表达式代表有结果,函数表达式的结果当然是函数了,或者是函数指针了,那么就可以直接调用函数了,调用函数就是func(parameters)

7 如果单纯为了消除语法错误,就直接为函数加一个名称即可,因为函数声明后面可以跟一个表达式的,即

   function foo(){}(000);

   这个只是一个函数声明,可以正常调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值