函数的定义 :

【完成某一个功能的代码段】

1、方便维护

2、重复利用

3、执行代码段

函数的一些要求:

  function 定义某一个函数 命名最好要有语义化,
  函数名称最好是驼峰,
  严格区分大小写,
  函数名重名会产生覆盖,
  函数可以有参数也可以没有参数,
  可写一个也可写多个,写几个传几个 ,
  函数通过return返回值,如果不返回则是undefined。

自调用函数:

函数表达式可以 "自调用"。

自调用表达式会自动调用。

如果表达式后面紧跟 () ,则会自动调用。

不能自调用声明的函数。

通过添加括号,来说明它是一个函数表达式:

 (function () {
var x = "Hello!!"; // 我将调用自己
})();

回调函数:

原理:

我现在出发,到了通知你”
  这是一个异步的流程,“我出发”这个过程中(函数执行),“你”可以去做任何事,“到了”(函数执行完毕)“通知你”(回调)进行之后的流程

 <script type="text/javascript">
//回调函数的例子
function calc(x,y){
return x()+y();
}
function test1(){
return 3;
}
function test2(){
return 5;
}
// alert(calc(test1,test2));
alert(calc(function(){return 5;},function(){return 10;}));
</script>

实现默认参数和可变参数:

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
//实现默认参数的形式
function calc(x,y){
x=x||0;
y=y||0;
return x+y;
}
function calc(x,y){
if(x===undefined){
x=0;
}
y=y===undefined?0:y;
return x+y;
}
// alert(calc());
// alert(calc(1,3));
function calc(x,y){
//return arguments;
//alert(arguments[0]);
//alert(arguments[1]);
x=arguments[0]?arguments[0]:0;
y=arguments[1]?arguments[1]:0;
return x+y;
}
// alert(calc());
// alert(calc(1,2));
//可变参数形式的函数
var sum=0;
function test(){
var paramsNum=arguments.length;//得到传入参数的个数
for(var i=1;i<=paramsNum;++i){
sum+=arguments[i];
//sum = sum + arguments[i];
}
return sum;
//document.write(sum);
}
//alert(test(1,2,3,4,5,6,123,344,43,3));
function test1(){
var paramsNum=arguments.length;
var max=0;
for(var i=0;i<=paramsNum-1;i++){
if(arguments[i]>max){
max=arguments[i];
}
}
return max;
}
alert(test1(123,445643,3432,23456));
</script>
</body>
</html>

全局函数:

     <script type="text/javascript">
//全局函数的例子
document.write('默认情况的结果<br/>');
document.write(parseInt('32')+'<br/>');
document.write(parseInt('032')+'<br/>');
document.write(parseInt('0x32')+'<br/>');
document.write(parseInt('true')+'<br/>');
document.write(parseInt('3king')+'<br/>');
document.write(parseInt(' 5abc ')+'<br/>');
document.write(parseInt(' 88 99 00')+'<br/>');
document.write('<hr color="red"/>');
document.write('转换成二进制的结果<br/>');
document.write(parseInt('32',2)+'<br/>');
document.write(parseInt('032',2)+'<br/>');
document.write(parseInt('0x32',2)+'<br/>');
document.write('<hr/>');
document.write('转换成八进制的结果<br/>');
document.write(parseInt('32',8)+'<br/>');
document.write(parseInt('032',8)+'<br/>');
document.write(parseInt('0x32',8)+'<br/>');
document.write('<hr/>');
document.write('转换成八进制的结果<br/>');
document.write(parseInt('32',16)+'<br/>');
document.write(parseInt('032',16)+'<br/>');
document.write(parseInt('0x32',16)+'<br/>');
//二进制转换成其他进制
document.write('<hr/>');
document.write('二进制转换成其他进制的结果<br/>');
document.write(parseInt('11001010',2)+'<br/>');
document.write(parseInt('11001010',8)+'<br/>');
document.write(parseInt('11001010',10)+'<br/>');
document.write(parseInt('11001010',16)+'<br/>');
document.write(parseInt('202',2)+'<br/>'); //转换成浮点型
document.write('<hr/>');
document.write(parseFloat('2.6')+'<br/>');
document.write(parseFloat('323')+'<br/>');
document.write(parseFloat('2e2')+'<br/>');
document.write(parseFloat('123abc')+'<br/>');
document.write(parseFloat(' 2.6 ')+'<br/>');
document.write(parseFloat('a2.6')+'<br/>'); //通过isFinite()检测是否是无穷值
var x=123;
x=Infinity;
x=-Infinity;
x=0/0;
x=0;
x=false;
// alert(isFinite(x));
x=NaN;
x=123;
x=false;
x=parseInt('king3');
alert(isNaN(x));
</script>

全局变量和局部变量的区别:

        <script type="text/javascript">
//全局变量和局部变量的区别
// function test(){
// var x=1;
// alert(x);
// }
// test();
// alert(x);
// function test1(){
// y=5;
// alert(y);
// }
//test1();
//alert(y);
var x=1,y=2;
function calc(x,y){
document.write('a的值为'+a+'<br/>');//undefined
document.write('函数体内x的值为:'+x+'<br/>');//
document.write('函数体内y的值为:'+y+'<br/>');//
var x=0,y=6;
z=x+y;
x=x+y;
var a=198;
document.write('a的值为:'+a+'<br/>');//
document.write('x的值为:'+x+'<br/>');//
return z;
}
// alert(calc(1,2));//6
// alert(x+'-'+y+'-'+z);//12u 126
//var a=1,b=2;
function test1(){
var a=5,b=10;
return a+b; }
function test2(){
var a=11,b=22;
return a+b;
}
alert(test1()+test2());
/*alert(test2());
alert(a+'--'+b);*/ </script>

函数这块总结可能不够细致,如果有更好的希望一起交流哦~~~~~

【JavaScript函数】的更多相关文章

  1. ABP(现代ASP.NET样板开发框架)系列之21、ABP展现层——Javascript函数库

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之21.ABP展现层——Javascript函数库 ABP是“ASP.NET Boilerplate Project ...

  2. JavaScript权威设计--JavaScript函数(简要学习笔记十一)

    1.函数调用的四种方式 第三种:构造函数调用 如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内.这和函数调用和方法调用是一致的.但如果构造函数没有形参,JavaScri ...

  3. JavaScript 函数

    JavaScript 函数 介绍:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.嗯,就像Java中封装的方法一样. 将脚本编写为函数,就可以避免页面载入时执行该脚本. 函数包含着一些代码 ...

  4. javascript 函数初探 (一)--- 神马是函数

    神马是函数? 所谓函数,本质上是一种代码的分组形式.我们可以通过这种形式赋予某组代码一个名字,以便与之后的调用.下面,我们来示范以下函数的声明: function sum(a, b){ var c = ...

  5. JavaScript函数的概念

    函数是这样的一段代码,它只定义一次,但可能被执行或调用任意多次. JavaScript函数是参数化的:函数的定义会包含形参,这些参数在函数的整体中像局部变量一样工作.函数调用时会为形参提供实参的值.除 ...

  6. Javascript函数重载,存在呢—还是存在呢?

    1.What's is 函数重载? );//Here is int 10 print("ten");//Here is string ten } 可以发现在C++中会根据参数的类型 ...

  7. JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别

    函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...

  8. javascript 函数重载 overloading

    函数重载 https://en.wikipedia.org/wiki/Function_overloading In some programming languages, function over ...

  9. JavaScript语言精粹读书笔记 - JavaScript函数

    JavaScript是披着C族语言外衣的LISP,除了词法上与C族语言相似以外,其他几乎没有相似之处. JavaScript 函数: 函数包含一组语句,他们是JavaScript的基础模块单元,用于代 ...

  10. 常见的JavaScript函数

    JavaScript函数一共可分为5类:常规函数.数组函数.日期函数.数学函数和字符串函数. (1)常规函数(9个) alert函数:显示一个警告对话框,包括一个“确定”按钮. confirm函数:显 ...

随机推荐

  1. 微信小程序教学第三章第三节(含视频):小程序中级实战教程:视图与数据关联

    § 视图与数据关联 本文配套视频地址: https://v.qq.com/x/page/z0554wyswib.html 开始前请把 ch3-3 分支中的 code/ 目录导入微信开发工具 首先 首先 ...

  2. Pycharm配置(二)

    1.主题 这部分教程主要介绍如何创建一个Python工程并使其具有Pycharm的代码风格.你将会看到Pycharm使你的源码变得非常简洁美观,带有合适的缩进.空格等等,因此Pycharm也是一款代码 ...

  3. <大话设计模式>笔记

    读完了<大话设计模式>这本书,收获很多,对程序设计有了很多新的理解.将每章模式的大概要点做了些笔记以备查阅,一些设计模式书读完也对其了解得不是很透彻,需要以后在实践中来不断地加深理解吧.读 ...

  4. sqlserver 存储过程 游标实例

    if exists(select * from sysobjects where id = object_id(N'dbo.test_cursor') and type = 'P') drop PRO ...

  5. bzoj 3597: [Scoi2014]方伯伯运椰子

    Description Input 第一行包含二个整数N,M 接下来M行代表M条边,表示这个交通网络 每行六个整数,表示Ui,Vi,Ai,Bi,Ci,Di 接下来一行包含一条边,表示连接起点的边 Ou ...

  6. MAMP升级mysql5.6到5.7

    RT 1.先把mamp环境停掉 sudo sh /Applications/MAMP/bin/stop.sh 2.然后使用brew安装mysql5.7 brew install mysql 3.默认安 ...

  7. Java NIO (二) 缓冲区(Buffer)

    缓冲区(Buffer):一个用于特定基本数据类型的容器,由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的子类. Java NIO 中的Buffer 主要用于和NIO中的通道(Ch ...

  8. flask_restful 学习笔记

    from flask import Flask,make_response,jsonify,request,url_for,g from flask_restful import reqparse, ...

  9. MongoDB数据库详解

    第1章 数据库管理系统 1.1 前言 01.数据的定义:文字.图像.地理位置信息(坐标.经纬度)等 02.数据库管理系统的定义:建立.存取和管理数据,保证数据安全和完整性的软件 03.常见的数据库管理 ...

  10. springBoot系列教程07:异常捕获

    发生异常是很正常的事,异常种类也是千奇百怪,发生异常并不可怕,只要正确的处理,并正确的返回错误信息并无大碍,如果不进行捕获或者处理,分分钟服务器宕机是很正常的事 所以处理异常时,最基本的要求就是发生异 ...