zoukankan      html  css  js  c++  java
  • 深入理解 JavaScript Function

    1.Function Arguments

    JavaScript 函数的参数

    类型可以是 复杂类型如  Object or Array 和简单类型 String Integer null undefined;当参数是 复杂类型的时候,将会把 复杂类型的 引用传出 函数体内,也就是传入函数内的不是 复杂类型的副本,而是其在内存中的指针。当参数是 简单类型的时候,就会直接传值进入函数体内。look the below demostrated:

    var obj={name:'joe'};

    (function changeName(obj){

         obj.name='new joe';

    })(obj);

    console.log(obj.name);  //new joe

    var num=2;

    (function(num){

        num=3;

    })(num);

    console.log(num); //2

    JavaScript 函数类型

    函数声明和函数表达式

    函数声明如下:

    function fname(){

    }

    函数表达式如下:

    var fname=function(){

    }

    函数声明可以在 解释器 解析之前调用, 函数表达式从另一个角度来看是赋值表达式的子集。 赋值完,才可以调用;for example:

    declaration();  //declaration
       function declaration() {
           console.log('declaration');
       }

       expression(); // function undefined
       var expression = function() {
           console.log('expression');
       }

    运行 expression 函数为 抛出异常,但是 declaration函数运行正常。这就是区别。

    因为 JavaScript在程序执行之前,声明函数已经被解析了,所以在函数定义之前可以去 调用它。

    而函数表达式 则是在 函数未赋值给变量之前,是不能调用的。所以,好的代码格式是 把 变量声明在

    前面,下面看一个例子:


    var expression;

    console.log(typeof expression);//undefined
    console.log(typeof declarations); // function
    if(true) {

        function declarations() {
            console.log('dec');
        }

        expression = function() {
            console.log('exp')
        }
    }

    declarations(); //dec
    expression();   //exp

    function scope

    JavaScript 是一函数来区分作用域的。

    var num=20;

    (function (){

    console.log(num) //30

    num=30;

    })();

    console.log(num); //20

    原文地址:http://markdaggett.com/blog/2013/02/15/functions-explained/

  • 相关阅读:
    FastDFS概述及原理
    SpringBoot中使用Redis缓存注解
    SpringBoot中使用Redis
    Jedis
    Redis客户端
    Redis的集群配置
    Redis的复制
    英语笔记-5
    内网转发Ubuntu
    数学笔记-4
  • 原文地址:https://www.cnblogs.com/Mr-Joe/p/2973813.html
Copyright © 2011-2022 走看看