一、函数深入用法
1.将函数赋给一个变量
function func(a,b){
return a*b;
}
var x=func;
function giveAnother(){
function func(){
var a=100;
var b=200;
alert(a+b);
}
var x=func; // 将函数赋给一个变量
x();
}
2.将函数赋给对象的属性
per.walk=function (){
var div=document.getElementById("div1");
div.innerHTML="<h3>你好,我正在学习JavaScript...</h3>";
};
per.say();
}
3. 将函数作为参数传递给另一个函数(高阶函数)
// f参数可以接收另一个函数
function highFunc(s,f){
return f(s);
}
// 该函数可以将传入的字符串转换为大写形式
function upper(a){
return a.toUpperCase();
}
function okFunc(){
var result=highFunc("hello world",upper);
alert("高阶函数的调用结果是:"+result);
}
4.将函数作为返回值
function outer(){
var a=10;
var b=5;
return function inner(){
return a*b;
}
}
var x=outer(); // 接收外部函数返回的内部函数
alert(x);
var y=x(); // 接收内部函数返回的值
alert(y);
何为“闭包”?
“闭包”是指内层函数可以贮存外层函数的局部变量或参数。
<title>闭包的应用</title>
<script type="text/javascript">
var array=[];
function outer(){
var a=["apple","banana","orange"];
for (var i = 0; i < a.length; i++) {
var x={};
x.index=i;
x.name=a[i];
x.func=function(){
alert(i);
};
array.push(x);
}
}
outer();
for (var j = 0; j < array.length; j++) {
array[j].func();
}
二、函数的参数
JavaScript中传递给函数的参数是通过arguments对象来保存的。
arguments对象有length属性,可以根据此属性得知实际调用时传递参数的个数,也可以通过下标操作符来获取arguments中的元素
<title>arguments接收实际参数</title>
<script type="text/javascript">
function func(a,b){
alert("a="+a);
alert("b="+b);
for (var i = 0; i < arguments.length; i++) {
alert("传入的实参索引"+i+",具体值是:"+arguments[i]);
}
}
func(89,11.5,true,"hello world");
三、JavaScript的内置对象
1. String
常用属性:length 返回字符串的长度
常用方法:toUpperCase()
toLowerCase()
indexOf("子字符串")
lastIndexOf("子字符串")
charAt(index)
substring(beginIndex)
substring(beginIndex,endIndex)
var str="西安理工大学";
var s="never give up!";
alert("str字符串的长度是:"+str.length);
alert("s字符串的长度是:"+s.length);
alert("大写字符串是:"+s.toUpperCase());
alert("str字符串索引为4的字符是:"+str.charAt(4));
alert("g的索引是:"+s.indexOf("g"));
alert("索引以2(包含)开始以7(不包含)结束的字符串是:"+s.substring(2,7));
2.Math内置对象
常用属性:PI 圆周率
常用方法:Math.random() 获取0.0到1.0之间的 随机数
Math.pow(a,b) a的b次方
Math.sqrt(num) 求某个数的平方根
Math.ceil(num) 上舍入
Math.floor(num) 下舍入
Math.round(num) 四舍五入
<title>Math内置对象</title>
<script type="text/javascript">
alert("圆周率是:"+Math.PI);
alert("5的3次方是:"+Math.pow(5,3));
alert("5.33向上舍入是:"+Math.ceil(5.33));
alert("4.99向下舍入是:"+Math.floor(4.99));
alert("6.78四舍五入是:"+Math.round(6.78));
3.Array内置对象
声明数组的方式:
var 数组名称=[元素1,元素2,元素3...];
JS中数组的特性:
1.可以存储不同的数据类型的元素。
2.数组的长度可变。
3.数组的索引可以是数字,也可以是字符串。
<title>Array内置对象</title>
<script type="text/javascript">
var array=["apple",11,23.66,true];
for (var i = 0; i < array.length; i++) {
alert(array[i]);
}
数组的属性:length 长度属性可以变化。
数组的方法:push(元素); 将元素添加到数组中
注意:给数组添加元素的另一种方式:数组名[索引]=元素
pop() 弹出一个元素
如何遍历数组:
for...in语法糖
for(var index in array){
// array[index] 当前遍历到的元素
}
4.Date内置对象
var date=new Date();
常用方法:getFullYear(); // 获取年
getMonth(); // 获取月
getDate(); // 获取一个月中的第几天
getDay(); // 获取一周中的第几天
getHours(); // 获取时
getMinutes(); // 获取分
getSeconds(); // 获取秒
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态时钟</title>
<script type="text/javascript">
function showTime(){
var date=new Date();
var year=date.getFullYear();
var month=date.getMonth();
var day=date.getDate();
var hour=date.getHours();
var minute=date.getMinutes();
var second=date.getSeconds();
var div=document.getElementById("clock");
div.innerHTML="<h3>现在时间是:"+year+"-"+(month+1)+"-"+day+" "+hour+":"+minute+":"+second+"</h3>";
}
setInterval("showTime()",1000); // 每隔1秒,定时调用指定函数
/**
window.οnlοad=function(){
alert("网页加载完毕!");
}**/
</script>
</head>
<body>
<div id="clock">div原来默认的文本</div>
</body>
</html>