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. Linux 网络编程: gethostbyname( ), getservbyname( )

    前言 最近在学习网络编程,用到几个应该比较常用的网络编程函数,所以写篇博客来记录一下,毕竟学得快忘得也快.国庆节在宿舍写着博客看着各个景点人山人海倒也快哉~ gethostbyname( ) 这个函数 ...

  2. [Just a feeling]

    The possibility of enhancing one's knowledge is limitless. Graduation only marks a stage of one's ed ...

  3. Python学习之路——迭代器、生成器、算法基础、正则

    一.迭代器: 迭代器是访问集合元素的一种方式. 迭代器对象是从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 另外,迭代 ...

  4. QR Code 码

    一.QR Code码 由日本Denso公司于1994年9月研制的一种矩阵二维码符号,它除具有一维条码及其它二维条码所有的信息容量大.可靠性高.可表示汉字及图象多种文字信息.保密防伪性强等优点外,还具有 ...

  5. 【JUnit4.10源码分析】5 Statement

    假设要评选JUnit中最最重要的类型.或者说核心,无疑是org.junit.runners.model.Statement.Runner等类型看起来热闹而已. package org.junit.ru ...

  6. js面向对象继承

    前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2 ...

  7. 开源网络库的分析libev libevent nginx ....

    最经看关于网络编程的一些书,对于网络编程中的一些基本东西,开源库已经封装的很好了,但是库归根结底还是使用的基本API,所以就想着分析一下,尤其是在看了各个库的介绍以后,所以这段时间想在这个方向投入一点 ...

  8. 树莓派常用Linux命令

    转自小五义 1.ls命令:列出文件目录的常用命令,主要参数见下表. -a 列出目录下的所有文件,包括以.开头的隐含文件. -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列 ...

  9. 创建.NET Core项目

    创建.NET Core项目 ? 对于.NET开发人员来说,我们已经习惯了VS这个世界上最强大的IDE,所以对他们来说,项目的创建直接利用安装到VS中相应的项目模板即可.当.NET Core跨出了Win ...

  10. csu1306: Manor

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1306 解题思路:唬人的水题,只要按照他的意思打,就能过,不过,数组最好开大点.用到优先队列,也可以 ...