javascript函数的声明和调用
将完成某一特定功能的代码集合起来,可以重复使用的代码块。

一、函数的声明方式(创建)

A.基本语法(function  关键字)
function 函数名([参数1],[参数2]....){
    函数体
    [retrun]  //返回值
}

function a(){
alert(1)
};

B.字面量定义的形式(匿名函数)
var 变量=function ([参数1],[参数2]....){
    函数体
    [retrun]  //返回值
}

var a=function(){
alert(1);
}

C.以对象的形式来声明(不推荐使用)
new 关键字。
var 变量=new Function([参数1],[参数2]...,"函数体");

var a=new Function(alert(1));

二、函数的调用方式

A.函数名() 、变量名();

function a(){
alert(1)
};
a(); var a=function(){
alert(1);
}
a();

B.直接调用执行;

(function  () {
alert(1);
})();
//结果 1

三、两种声明方式的区别

基本语法

function a(){
alert(1)
};
//会先预编译

 1.如果两个函数的命名相同,后面的将会覆盖前面的函数

function a(){alert(1)};
function a(){alert(2)};
a();
//结果 2
function a(){alert(1)};
var a=function(){alert(2)};
a();
//结果 2
var a=function(){alert(2)};
function a(){alert(1)};
a();
//结果 2

2.以基本语法声明的函数,会在代码运行的时候,提前加载到内存当中,以供以后使用,但是以字面量形式命名的函数,会在执行到的时候,才进行赋值

function a(){alert(1)};
a();
//结果 1
a();
function a(){alert(1)};
//结果 1
a();
var a=function (){alert(1)};
//结果 报错

 3.在不同的<script></script>块中的函数,使用和调用的时候,应该先定义,后执行。

<script>
a();
</script> <script>
var a=function (){alert(1)};
</script> //结果 报错

javascript函数的参数和return语句

//金字塔

function a(num){
for(var i=1;i<=num;i++){
for(var b=1;b<=num-i;b++){
document.write('=');
}
for(var b=1;b<=i*2-1;b++){
document.write('8');
}
for(var b=1;b<=num-i;b++){
document.write('=');
}
document.write('<br>');
}
};
a(9);

效果:

aaarticlea/png;base64,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" alt="" />

一、参数(可以动态的改变函数体内对应的变量的类型或值,使同一函数体得到不同的结果)

形参:在定义函数的时候,函数括号中定义的变量叫做形参:function a(形参){}

实参:调用函数的时候,在括号中传入的变量或值叫做实参:a(实参)

1.参数的类型(可以是任何的数据类型)

2.参数的个数(最多是25)

  a.实参和形参数量相等,一一对应。

  b.形参的数量多于实参,不会报错,但是多出的参数他的值,会自动赋值为undefined

function a(a,b){
alert(a);
alert(b)
};
a(1);
结果:1-------------undefined

  c.实参的数量多于形参。不会报错,但是要得到多出的实参的值,要用arguments对象

function a(a){
alert(a)
};
a(1,2);
//结果:1

 二、arguments对象(每创建一个函数,该函数就会隐式创建一个arguments对象,他包含有实际传入参数的信息)

1.length(检测实际传入参数的个数)

function a(a){
alert(arguments.length);
};
a(1,2);
//结果 2

2.callee(对本身的调用)

function a(a){
alert(arguments.callee);
};
a(1,2);
//结果 function a(a){alert(arguments.callee)}

3.访问传入参数的具体的值([下标])

function a(a){
alert(arguments[2]);
};
a(1,2,3);
//结果 3

 三、函数重载(同一个函数因为参数的类型或数量不同,可以对应多个函数的实现,每种实现对应一个函数体)

function a(){
for(i=0;i<arguments.length;i++){
alert(arguments[i]);
}
};
a(1,2,3);
//结果依次弹出 1、2、3

javascript笔记整理(函数)的更多相关文章

  1. javascript笔记整理(回调、递归、内置顶层函数)

    1.回调函数(通过函数的指针来调用函数,把一个函数的指针做为另一个函数的参数,当调用这个参数的时候,这个函数就叫做回调函数) a.通过指针来调用 function aa(a,b,fun){ retur ...

  2. JavaScript笔记整理

    整理一篇工作中的JavaScript脚本笔记,不定时更新,笔记来自网上资料或者自己经验归纳. (1) 获取Url绝对路径 function getUrlRelativePath() { var url ...

  3. javascript笔记整理(事件)

    一.事件驱动 1.事件javascript侦测到的用户的操作或是页面的一些行为(怎么发生的) 2.事件源引发事件的元素(发生在谁的身上) 3.事件处理程序对事件处理的程序或是函数 (发生了什么事) 二 ...

  4. javascript笔记整理(对象的继承顺序、分类)

    Object.prototype.say=function(){ alert("我是顶层的方法"); } children.prototype=new parent(); pare ...

  5. javascript笔记整理(对象遍历封装继承)

    一.javascript对象遍历 1.javascript属性访问 对象.属性名 对象['属性名'] var obj={name:'chen',red:function(){ alert(1);ret ...

  6. javascript笔记整理(对象基础)

    一.名词解释 1.基于对象(一切皆对象,以对象的概念来编程) 2.面向对象编程(Object Oriented Programming,OOP) A.对象(JavaScript 中的所有事物都是对象) ...

  7. javascript笔记整理(变量作用域)

    变量的作用域(作用域:指的就是一段代码的作用范围) 一.变量的作用域 1.全局变量(在代码中任何地方都能够访问得到的变量,拥有全局的作用域) A.最外层函数外面定义的变量 var a=1; funct ...

  8. javascript笔记整理(概述,变量,数据类型)

    A.概述 1.输出工具: document.write()---可以是html alert()---字符串 prompt(text,defaultText) text---可选.要在对话框中显示的纯文 ...

  9. javascript笔记整理(正则)

    RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具 var re=/e/; var re=new RegExp('e'); 正则表达式的 String 对象的方法 1.search- ...

随机推荐

  1. selenium 怎么处理display:none

    页面HTML是这样的:  .... <div class="cf w index-middle"> <div id="li" class=&q ...

  2. C陷阱与缺陷(四)

    第四章 连接 4.1 什么是连接器 C语言中的一个重要思想就是分别编译,即若干个源程序可以在不同的时候单独进行编译,然后在恰当的时候整合在一起.典型的连接器把由编译器或汇编器生成的若干个目标模块,整合 ...

  3. document.domain与js跨域的问题

    以前如果要使iframe里面的脚本能访问parent的内容,但iframe和parent的二级域名相同,那一般都会在两者都写上document.domain="xxx.com" 以 ...

  4. Uva 11694 Gokigen Naname

    基本思路是Dfs: 1. 一个一个格子摆放,以每个各自的左上角的点为基准点代表格子,比如(0,0)代表(0,0)(0,1)(1,0)(1,1)组成的格子,(0,1)代表(0,1)(0,2)(1,1), ...

  5. 【C++继承与派生之二】有子对象的派生类的构造函数

    这是我今天看书刚刚看到的,觉着以前对这一块内容了解不多,所以整理一下分享给大家.首先要介绍一下子对象的概念.类的数据成员不仅可以是int.char这样的基本类型,也可以是类对象,如可以包含这样的数据成 ...

  6. Java chapter04-1

    public class CPU { int speed; //获得speed的值 public void setSpeed(int m){ speed = m; } //返回speed的值 publ ...

  7. Spring基于 Annotation 的简单介绍

    tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial"> 1.使用 @ ...

  8. BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)

    3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec   Memory Limit: 256 MB Submit: 123   Solved: 73 [ Submit][ St ...

  9. Python中NumPy基础使用

    Python发展至今,已经有越来越多的人使用python进行科学技术,NumPY是python中的一款高性能科学计算和数据分析的基础包. ndarray ndarray(以下简称数组)是numpy的数 ...

  10. Linux内核态抢占机制分析(转)

    Linux内核态抢占机制分析  http://blog.sina.com.cn/s/blog_502c8cc401012pxj.html 摘 要]本文首先介绍非抢占式内核(Non-Preemptive ...