函数的定义 :

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

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. SVN 安装与使用教程总结

    转载:http://www.cnblogs.com/armyfai/p/3985660.html SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需 ...

  2. 《深入浅出Netty》【PDF】下载

    <深入浅出Netty>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062563 内容简介 本文档主要讲述的是深入浅出Netty: ...

  3. 【java】扫描流Scanner接收输入示例

    多用Scanner少用InputStream 多用BufferedReader少用Reader 多用PrintStream少用OutputStream 多用PrintWriter少用Writer pa ...

  4. C C语言中关键词,以及知识点复习

    C语言学习 C语言练习知识点 auto        局部变量(自动储存) break       无条件退出程序最内层循环 case        switch语句中选择项 char         ...

  5. Hive数据倾斜解决方法总结

    数据倾斜是进行大数据计算时最经常遇到的问题之一.当我们在执行HiveQL或者运行MapReduce作业时候,如果遇到一直卡在map100%,reduce99%一般就是遇到了数据倾斜的问题.数据倾斜其实 ...

  6. ArcGIS 网络分析[1.1] 创建用于网络分析用的线类型shp文件[这个太基础了吧!]

    具体的准备,在上一篇就说过了,不再赘述. 阅读本篇前,需要的预备知识是:ArcGIS创建各种矢量数据的方法,了解地理坐标与投影坐标 本篇只创建单一的线数据,至于点数据,以后进行复杂的网络分析时再添加进 ...

  7. 进程间通信 ipcs

    在linux系统上借助ipcs命令可以方便地查看进程间通信状态 操作系统:centos7.3 x86_64 应用软件: oracle12c

  8. raspberrypi 3代B 配置摄像头

    raspberrypi 3代B 配置摄像头 硬件环境: 树莓派3B (element 14版) 树莓派3夜视摄像头800万像素(element 14版) 金士顿 64GB TF Class 10 UH ...

  9. vue基础学习(三)

    03-01  vue的生存周期-钩子函数 <style> [v-cloak]{display:none;} </style> <div id="box" ...

  10. Xampp配置本地域名及常见错误解决

    本地域名配置 1.计算机-->C盘-->Windows-->System32-->drivers-->etc-->hosts 127.0.0.1       loc ...