1. 函数的 声明

1) 声明式写法

function j1(id){
alert(id);
}

2) 声明匿名函数变量

var j2 = function (a, b) { 
  alert(a + " " + b);
};

3) 实例化函数对象

var j3 = new Function("a", "b", "alert(a+' '+b);");//大写,为内置函数
// 前面几个是参数名(个数无限制),最后一个是函数体

函数声明注意事项:

1) 函数以function开头,不需声明返回值类型、参数类型

2) 不要与系统函数(JS内置、DOM内置方法)重名:如selectAll、focus

3) JS中不像C#那样要求所有路径都有返回值,没有返回值就是undefined

4) 程序执行前会先挑出命名函数,所以对于重名函数,以最后一个定义的为准,不考虑函数位置;而匿名函数不会提前搜索,按代码顺序执行

5) arguments对象,方法声明时的参数叫命名参数(方便用户使用),即便没有命名参数,通过arguments对象可以获得用户传递进来的所有参数。方法调用时传递进去的参数都保存在arguments对象(该对象把参数封装在一个数组内)中

6) 动态为方法传递参数,类似于.net中的params关键字作用

JavaScript很酷的一点:声明函数时不需要列出那些函数的所有参数。所以即使你的函数声明是showTab(),但调用这个函数时还可以为它传入参数。

弊端:会遗漏或忽视传入函数的参数。

虽然可以不必列出JS函数需要的所有参数,但是,如果确实希望在函数中使用这些参数,则必须将其列出。

2. 函数的 调用

//1. 你把方法写好,那么方法编译会常驻在内存中;
//2. 还可能将系统已经存在的方法覆盖掉。
//3. 在JS中没有重载,如果方法名一样,后面的会覆盖前面的方法。
//4. 参数不是必须的,定义方法时,可以设置参数,也可以不设置,如果设置了参数,在调用时也可以不传递相应的值。如果没有设置,调用时也可以传递值。
//5. 如果是在调用的时候加了(),那么就相当于是执行了这个方法,如果只是方法名,那么就相当于绑定了方法的引用。如果需要方法起作用,还必须做触发
function funName(){ //声明一个方法(首字母小写),和 window.onload 同一级别
var name=”张三”;
alert(name);
return function(){ alert(“方法返回值”);};//如果不写return返回的是undefined
}
//单独定义的方法,不要写在另外一个方法内部,不然在dom里面调用不到
function funName(name,age,address){ //调用时,按顺序传递对应的值
//var name=”张三”;
alert(name+”:”+age); //如果未传递值,则显示对应变量为undefined
}
funName();//直接调用方法(不管你写在哪里,只要可以运行这句代码,就会调用方法)
***************************************************************************
//下面两行代码都会在页面加载时先执行函数,然后把方法返回值给onclick事件。因为此时页面所有内容(包括文字、图片、视频、js脚本等)还未加载完毕,找不到对象,所以必须写在window.onload=function(){ ... }里面。
//动态绑定方法 --- 匿名方法
document.getElementById(“btn”).onclick = function(){ }//声明匿名函数
document.getElementById(“btn”).onclick = funName(); //运行funName函数 ***************************************************************************
<input type=”button” value=”调用方法” id=”btn1” onclick=”funName” /> ( X )
<input type=”button” value=”调用方法” id=”btn2” onclick=”funName()” />
<input type=”button” value=”调用方法” id=”btn3” onclick=”funName('aa')” />

3. JS常见全局函数

decodeURI() 解码某个编码的 URI

encodeURI() 把字符串编码为 URI

decodeURIComponent() 解码一个编码的 URI 组件

encodeURIComponent() 把字符串编码为 URI 组件

escape() 对字符串进行编码 (ECMAScript 3不推荐使用,用上面的函数代替)

unescape() 对由 escape() 编码的字符串进行解码,当一个数值 除以 0 的时候,返回一个 无穷大值(infinite)

isFinite() 检查某个值是否为[有穷大]的数。

isNaN() 检查某个值是否是数字(is not a number)。

parseFloat() 解析一个字符串并返回一个浮点数

parseInt() 解析一个字符串并返回一个整数

<script type="text/javascript">
//如果需要使用body里面创建的元素,那么就需要写在window.onload中
//在asp里面,有时,我们需要从一页面传递参数到另外一页面。如果传递的是中文,接收的就有可能是乱码
var str = "传智播客";
var res = window.escape(str);
alert(res);
alert(unescape(res));
alert(isFinite(1 / 0)); //false
</script>

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

  1. JS笔记 运算符 函数

    1.运算符 1.位运算符 将数字转换为二进制后进行运算 只做整数运算,如果是小数的话,则去掉小数位再运算 2.位运算 1.按位 与:& 语法:a&b; 2.按位 或| 语法:a|b 任 ...

  2. js笔记:匿名函数

    ;(function(){ alert('啥也没做');})(); 会弹框. 这是个匿名函数.最前面的分号可以去掉,仅仅是在代码压缩时防止出错. 该函数可以拆解成非匿名函数: var a= funct ...

  3. EChart.js 笔记二

    交互组件 Echart.js 中交互组件比较多.例如: legend(图例).title(标题组件).visualMap(视觉映射组件).dataZoom(数据缩放组件).timeline(时间线组件 ...

  4. Objective-C 学习笔记(二) 函数

    Objective-C 函数 定义一个方法 在Objective-C编程的方法定义的一般形式如下: - (return_type) method_name:( argumentType1 )argum ...

  5. es6 入坑笔记(二)---函数扩展,箭头函数,扩展运算符...

    函数扩展 1.函数可以有默认值 function demo( a = 10,b ){} 2.函数可以使用解构 function demo( { a = 0,b = 0 } = {} ){ } 3.函数 ...

  6. python3精简笔记(二)——函数

    函数 下面的地址可以查看函数: https://docs.python.org/3/library/functions.html 也可以在交互式命令行通过help()查看函数的帮助信息. 如: > ...

  7. Python学习笔记二--函数

    1.使用global语句定义全局变量 2.默认参数 默认参数值应该是不可变的.注意: 只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的 ...

  8. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

  9. 纯JS实现KeyboardNav(学习笔记)二

    纯JS实现KeyboardNav(学习笔记)二 这篇博客只是自己的学习笔记,供日后复习所用,没有经过精心排版,也没有按逻辑编写 这篇主要是添加css,优化js编写逻辑和代码排版 GitHub项目源码 ...

随机推荐

  1. repeater重复器、地址栏传值、response

    repeater重复器: <HeaderTemplate> <ItemTemplate> <AlternatingItemTemplate> <FooterT ...

  2. /etc/xinetd.conf 和 /etc/xinetd.d/*【新网络服务配置】

    http://blog.csdn.net/kelven2004/article/details/1701930 xinetd 是 inetd 的安全加强版,它内置了自己的 TCP wrapper, 可 ...

  3. LOL

    当输入数据一样时,计算结果是一样的,但运行时间的差别很大.在算法正确的前提下,应该选择算法效率高的 嵌入式软件,BSP驱动,通信协议,上层应用软件. 多协议标签交换(MPLS)是一种用于快速数据包交换 ...

  4. flask笔记2-程序的基本结构

    第一个flask web程序 1.初始化(所有flask程序都必须创建一个程序实例,程序实例是Flask类的对象): from flask import Flask app = Flask(__nam ...

  5. SPSS数据分析—两阶段最小二乘法

    传统线性模型的假设之一是因变量之间相互独立,并且如果自变量之间不独立,会产生共线性,对于模型的精度也是会有影响的.虽然完全独立的两个变量是不存在的,但是我们在分析中也可以使用一些手段尽量减小这些问题产 ...

  6. 并列统计CASE WHEN

    select sum(case when depart = 'Physical' then 1 else 0 end) PhyTotal, sum(case when depart = 'Chemis ...

  7. 破解YunFile下载间隔10分钟/下载等待30秒

    [破解10分钟间隔] 可以采用断网重连等方法重新获取IP地址,就不用再等十分钟了 [破解30秒等待] 收藏一个书签,书签地址如下 javascript:var downpage_link = docu ...

  8. 《JAVA与模式》之单例模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述单例模式的: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的 ...

  9. kaggle数据挖掘竞赛初步--Titanic<派生属性&维归约>

    完整代码: https://github.com/cindycindyhi/kaggle-Titanic 特征工程系列: Titanic系列之原始数据分析和数据处理 Titanic系列之数据变换 Ti ...

  10. 单例模式(singleton)

    什么是单例模式:(singleton) 单例模式的意图是类的对象成为系统中唯一的实例,提供一个访问点,供客户类共分享资源 单例类,必须提供一个接入点(特殊的类方法) // SingletonTools ...