JavaScript_个人笔记6_再说函数

    在JS中,函数可以分为3中:1)函数声明 FD(FUNCTION DECLARE)  2),函数表达式 FE  3) Function类。

    函数声明 FD:这种是最常见的。

     function Foo(){}

     函数声明在进入上下文时就会创建,所以针FD,在代码结构上往往可以会出现

     var fooResult = Foo();

     function Foo(){} 

     即调用者在Foo声明之前都可以。

     FD一般出现在程序主体或者其他函数体中,这种函数的函数名不可省略,因为这个函数名本身就是一个函数变量。

     一个比较有意思的现象的是,在函数申明的后面(如果有分号;的话,那么在分号之前),可以插入一个表达式,而运行正常,比如

      function func(){}(1);

      function func(){}1;

      function func(){}"Expression";

      ...诸如此类,另外,可以值得说明的是,只有函数申明后面可以这么做,很简单的一个测试方法类似下面:

      function foo(){}1(1); 会提示 number is not a function.

   

   2)  函数表达式 FE

      函数表达式一般的形式为 function [Foo](){},即这里的函数名称是可有可无,其实声明了函数名称,除了在这个函数体中可以引用,其他地方尝试调用都是提示UnDefine。

      FE的一个优点就是不会“污染”变量对象,因为其Function Name是可有可无的,通常使用的更多的是匿名的方式。

      函数表达式常用的情况是为变量或者作为参数传递,另外一种情况就是用作立即执行的,比如:

     (function(){ })(); 

     值得说明的是,这里的两个括号,分别是 分组操作符,将一个函数转变为函数表达式,后面的括号是调用一般function的格式。

3)Function类

     就是创建Function的对象,用于模拟面向对象。


     一些小点总结:

    1)js里面,当function中没有return,或者return后面的表达式为空,再或者返回的是基本类型,[number,string,boolean,] null, undefined,返回的是function对象。

    2)  instanceof 基本类型的变量的结果都是null

    3)number + string 遇到这种表达式都会主动调用toString.

    4)  number - string 这种表达式会主动将string转化为number

    5)在尝试转化为numbe时尝试调用valueOf

    6)  在尝试转化为string时会尝试调用toString

    7)(1,3,4,2) 返回的结果是2,因为括号里面的内容其实是由逗号,组成的表达式,结果是2

   8)  === !== 都是不转换数据类型;而去掉一个等号(=)后就会尝试数据类型的转换

   9)函数声明在进入上下文时已经创建,创建的结果是,函数名称作为一个变量对象存在于当前的执行环境中,即该环境中多了一个以该函数名为名称的变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值