ECMAScript function的理解
ECMAScript 函数与其他语言函数最大的不同在于,其不介意传入多少参数以及参数的类型
比如函数的形参有两个,但是调用函数传入的参数可以写一个,三个或不写参数(对应undefined)等,解析器都可以正常解析,这是因为
ECMAScript中参数在内部是以一个数组形式来表示,故而不需要关系传入参数的数量和类型
在函数体内通过arguments
对象来访问这个参数数组,从而获取传递给函数的参数
修改命名参数值不会改变arguments对应值
可以通过arguments.length
来获得传给函数参数的个数,依次,可以来写不同的实现方法
ECMAScript没有重载的概念,重名函数,其后会覆盖前面相同定义的,但是可以通过上一点模仿重载
基本类型 引用类型
引用类型,可以添加属性和方法
基本类型和引用类型值在复制变量值的差异,引用类型是通过指针对象来实现的
参数传递,二者都是通过值传递的
用instanceof
来检测具体的引用类型
demo代码 写一遍 理解一遍
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js高程学习笔记2 demo</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<style type="text/css">
</style>
<script type="text/javascript">
function jsFunction(demoNum){
switch(demoNum){
case 1: sayHi("Jim"," nice to meet you");break;
case 2: sayHi();break;
case 3: sayHi2("Jim"," nice to meet you");break;
case 4: doAdd(10);break;
case 5: doAdd(10,2000);break;
}
}
// 有参数的
function sayHi(name,message){
alert("hello "+name+message);
}
// 通过arguments获取参数
function sayHi2(){
alert("hello "+arguments[0]+arguments[1]);
}
// 通过arguments.length实现重载的功能
function doAdd(){
if(arguments.length == 1){
alert(arguments[0] + 10);
}else if(arguments.length == 2){
// 修改命名参数值不会改变arguments对应值
//arguments[1] = 100;
alert(arguments[0]+arguments[1]);
}
}
function test(){
var person = new Object();
setName(person);
alert(person.name);
}
function setName(obj){
obj.name = "Nicholas"
// 引用变量的参数传递 也是值传递
// obj = new Object();
// obj.name = "Jim";
}
</script>
</head>
<body>
<div class="content">
js函数的理解,数值变量,引用变量
</div>
<hr/>
<div class="jsFunction">
<div>js函数的一些demo</div>
<input class="demo1" type="button" value="sayHi" onclick="jsFunction(1)">
<input class="demo2" type="button" value="sayHi2" onclick="jsFunction(2)">
<input class="demo3" type="button" value="sayHi2" onclick="jsFunction(3)">
<input class="demo4" type="button" value="doAdd(10)" onclick="jsFunction(4)">
<input class="demo5" type="button" value="doAdd(10,20)" onclick="jsFunction(5)">
</div>
<hr/>
<div class="dataType">
<div>数值类型 引用类型</div>
<input class="demo6" type="button" value="setName" onclick="test()">
</div>
</body>
</html>