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/

转载于:https://www.cnblogs.com/Mr-Joe/p/2973813.html

深入理解 JavaScript Function相关推荐

  1. 深入理解javascript中的立即执行函数(function(){…})()

    2019独角兽企业重金招聘Python工程师标准>>> javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各 ...

  2. 深入理解javascript函数系列第二篇——函数参数

    前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数.本文是深入理解javascript函数 ...

  3. js 对象深拷贝_这一次,彻底理解JavaScript深拷贝

    导语 这一次,通过本文彻底理解JavaScript深拷贝! 阅读本文前可以先思考三个问题: JS世界里,数据是如何存储的? 深拷贝和浅拷贝的区别是什么? 如何写出一个真正合格的深拷贝? 本文会一步步解 ...

  4. 深入理解JavaScript类数组

    起因 写这篇博客的起因,是我在知乎上回答一个问题时,说自己在学前端时把<JavaScript高级程序设计>看了好几遍. 于是在评论区中,出现了如下的对话: 天啦噜,这话说的,宝宝感觉到的, ...

  5. 深入理解javascript作用域系列第四篇——块作用域

    前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用其他类型的作用域单元甚至可以实现维护起来更加优秀.简洁的 ...

  6. JavaScript 开发进阶:理解 JavaScript 作用域和作用域链(上)

    作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理.今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望 ...

  7. 深入理解JavaScript定时机制

    容易欺骗别人感情的JavaScript定时器 本文地址: http://www.laruence.com/2009/09/23/1089.html 转载文章 JavaScript的setTimeout ...

  8. 深入理解javascript的闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域 ...

  9. 理解javascript 回调函数

    理解javascript 回调函数 原文:理解javascript 回调函数 ##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一 ...

最新文章

  1. 苹果 2020 iPhone 展望:相机大升级,5G 首次接入
  2. SqlParameter
  3. IDEA中进行SpringBoot整合spring-ws开发webservice接口后期要修改xsd文件流程
  4. 详解WordPress中简码格式标签编写的基本方法
  5. jenkins访问地址_运维机器人hubot集成jenkins
  6. Kubernetes 架构与设计
  7. mysql sum 对应_ASK MySQL查询SUM不同的表
  8. 小程序的全栈开发新时代
  9. SAP GUI 750 下载链接
  10. html中对应Word中的字体和字号
  11. 微信小程序图片布满整个窗口
  12. 详解ICT及其业务领域范围
  13. 电气、电子电路符号与表示方法
  14. c语言选猴王链表,C语言程序设计-猴子选大王[链表应用]
  15. 高并发系统中库存热点的解决方案
  16. Linux(Centos6.5)下安装Vertica9.2.1数据库教程
  17. 益寿延年,这13种食物真是宝,能延寿10年,赶紧收藏!
  18. kdd 2021 多网络挖掘的新前沿:近期发展和未来趋势
  19. Danar程序员之家
  20. 天下数据支招如何防范域名被劫持

热门文章

  1. Linux系统查看系统是32位还是64位方法总结 in 创新实训
  2. Apache Camel 2.15.0 发布,Java 规则引擎
  3. sql 存储过程学习
  4. WebApi接口安全认证——HTTP之摘要认证
  5. UML基本架构建模--获取类
  6. 深入理解PHP原理之Opcodes
  7. iOS App 崩溃报告符号化
  8. Struts详细用法
  9. Prefactoring——Guidelines
  10. 前端之Bootstrap框架