函数


函数的实参和形参

function    temp (a,b){ console.log(a) };  // a , b为两个形参
var a1 = 2;
var b1 = 3;
temp(a1,b1); //a1 , b1为两个实参
  • 当调用函数的时候传入的实参比函数声明指定的形参个数要少,剩下的形参都将设置为undefined.
  • 在函数体内,我们可以用标识符arguments来访问传入函数的实参值。实参对象是一个类数组对象(拥有一个数值length属性和对应非负整数属性的对象看做一种类型的数组),这样可以通过数字下标来访问。

函数prototype

每一个函数都包含一个prototype属性,这个属性是指向一个对象的引用,这个对象称为“原型对象”(prototype object)。每一个函数都包含不同的原型对象。当将函数用作构造函数的时候,新创建的对象会从原型对象上继承属性。

function Counter(){
this.add=function(a,b){
console.log(a+" + "+b+" = "+ (a+b));
};
}; Function.prototype.minus = function(a,b){
console.log(a+" - "+b+" = "+(a-b))
}; Object.prototype.multiply = function(a,b){
console.log(a+" * "+b+" = "+a*b)
};
Counter.prototype.devide = function(a,b){
console.log(a+" / "+b+" = "+a/b);
}; function Example(){
}; var temp = new Counter();
var temp2 = Counter;
var temp3 = Object.create(temp); temp3.add(1,5);
temp.add(1,3);
temp2.multiply(1,3);
temp.devide(3,2);
console.log("add" in temp);
console.log("minus" in temp);
console.log("multiply" in temp);
console.log("devide" in temp); 1 + 5 = 6
1 + 3 = 4
1 * 3 = 3
3 / 2 = 1.5
true
false
true
true

函数作用域

  • 1.JS的变量作用域是函数级的。
  • 2.JS编程环境的顶级作用域是window对象下的范围,称为全局作用域,全局作用域中的变量称为全局变量。
  • 3.JS函数内的变量无法在函数外面访问,在函数内却可以访问函数外的变量,函数内的变量称为局部变量。
  • 4.函数可以嵌套,多个函数的层层嵌套构成了多个作用域的层层嵌套,形成了JS的作用域链。
  • 5.JS作用域链的变量访问规则是:如果当前作用域内存在要访问的变量,则使用当前作用域的变量,否则到上一层作用域内寻找,直到全局作用域,如果找不到,则该变量为未声明。

代码示例

var a = 1;
var c = 3;
function example(a){
var a = 3;
b = 2;
console.log("a="+a);
}
example(2); function example2(c){
console.log("b="+b+",c="+c);
}
example2(4); function example3(d){
var d = 4;
return function example4(){
console.log("d="+d);
}
}
var temp = example3();
temp(); a=3
b=2,c=4
d=4

6-JS函数(二)的更多相关文章

  1. (八)js函数二

    1.变量 a)局部变量:在所有函数内部定义的变量,或者在函数内部未使用var声明的变量也属于全局变量. b)全局变量:在所有函数外部定义的变量. eg: 1)     var a = 5,b = 4, ...

  2. 通用js函数集锦<来源于网络> 【二】

    通用js函数集锦<来源于网络> [二] 1.数组方法集2.cookie方法集3.url方法集4.正则表达式方法集5.字符串方法集6.加密方法集7.日期方法集8.浏览器检测方法集9.json ...

  3. VC与JavaScript交互(二) --- 调用JS函数

    这一章,我们来动手实践VC调用JS函数. 我们动手写一个HTML,其中包含这样一段JS代码: //[html] <script type="text/javascript"& ...

  4. Js函数function基础理解

    正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...

  5. js函数的调用问题

    1.js函数的调用方式有三种.请问以下“二”处的几行代码有什么猫腻? //一 事件调用 btn.onclick=fn; //二 直接调用(window调用) fn(); //自上而下解析到这一行的时候 ...

  6. JS函数和变量

    JS函数和变量  函数: 函数是由事件或者当它被调用时执行的可重复使用的代码块. 是一个独立的代码块,实现特定功能模块. 函数他不进行调用触发的话,不会自己主动执行. 像ATM机一样,不去取钱的话不会 ...

  7. js 函数定义三种方式

    <p>Js 函数定义的三种方式:</p> <br> <p>方式一:function</p> <script type="te ...

  8. 在JS函数中执行C#中的函数、字段

    1.调用字段 cs文件的代码: ; protected void Page_Load(object sender, EventArgs e) { id = ; } js页面的代码: function ...

  9. AS与JS相互通信(Flex中调用js函数)

    转载自http://www.blogjava.net/Alpha/archive/2009/06/27/284373.html Flex中As调用Js的方法是:     1.导入包 (import f ...

  10. js函数大全

    js函数集·字符串(String) 1.声明 var myString = new String("Every good boy does fine."); var myStrin ...

随机推荐

  1. linux代码段,数据段,BSS段, 堆,栈(二)

    //main.cpp int a = 0; 全局初始化区  char *p1; 全局未初始化区 main() { int b; 栈 char s[] = "abc"; 栈 char ...

  2. nginx、fastCGI、php-fpm关系梳理(转载 http://blog.sina.com.cn/s/blog_6df9fbe30102v57y.html)

        前言: Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装 php-fpm扩展并启动php-fpm守护进程, ...

  3. android fragment+ FragmentTabHost+viewpager 切换状态不保存的问题

    转载请注明出处:http://blog.csdn.net/djy1992/article/details/46674169 @author dujinyang 难得有时间上来写博客. fragment ...

  4. 杭电1241 Oil Deposits

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission ...

  5. PAT乙级 1021. 个位数统计 (15)

    1021. 个位数统计 (15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一个k位整数N = dk-1 ...

  6. smarty简单介绍

    smarty简单介绍 示意图如下 简单介绍smarty.class.php类的大体内容,如下: <?php class Smarty //此类就是libs中的Smarty.class.php类 ...

  7. 高并发应用中客户端等待、响应时间的推算,及RT/QPS概念辨析

    高并发应用中客户端等待.响应时间的推算,及RT/QPS概念辨析 对于一个网站,已知服务端的服务线程数和处理单个请求所需的时间时,该如何算出高并发时用户从点击链接到收到响应的时间?注意这个时间并不等于服 ...

  8. YZM的全排列

    50073081 YZM的全排列 [试题描述] 一天,老师给可怜的YZM出了一道题:写出1~n的全排列.YZM写了一天也没写出来.请你帮帮快跪的YZM,输出1~n的全排列.注:这里n为9 [输入要求] ...

  9. ipseccmd命令解析

    IPSec 首先需要指出的是,IPSec和TCP/IP筛选是不同的东西,大家不要混淆了.TCP/IP筛选的功能十分有限,远不如IPSec灵活和强大.下面就说说如何在命令行下控制IPSec. XP系统用 ...

  10. 如何在WPF应用程序中使用视频处理控件TVideoGrabber

    要在WPF 中使用 TVideoGrabber 组件,需要像下面的方法来使用 VS.NET(DLL) 版本的组件: ——复制TVideoGrabber_x.x.x.x_x86.dll到c:/windo ...