在程序设计中,可以将一段经常使用的代码“封装”起来,在需要时直接调用,这种“封装”就是函数。
函数:为完成某一功能的程序指令(语句)的集合。
执行特定任务的语句块。
函数特点:封装代码,代码的重用性强!
isNaN() 用来计算一个参数以确定它是否为非数字
parseInt()/parseFloat() 将数字字符串转化为一个数值
isFinite() 用来确定参数是否是一个有限数值.
也就是说,如果该参数为非数字NaN,正无穷数,或负无穷数,则返回false,否则返回true;
如果是字符串类型的数字,将会自动关转化为数字型.
Number.NEGATIVE_INFINITY Number.POSITIVE_INFINITY
function 函数名(){
函数体;
}
说明:
function 定义函数关键字,
“函数名” 是你给函数取的名字,
“函数体” 是为完成特定功能的代码。
函数名 必须是唯一的
函数定义好后,不能自动执行,需要调用它,直接在需要的位置写函数名。
带参数函数
有返回值函数
Math.PI 圆周率 π
Math.ceil() 向上取整 返回的是大于或等于函数参数,并且与之最接近的整数 如:Math.ceil(2.1) ->3
Math.floor() 向下取整 返回的是小于或等于函数参数,并且与之最接近的整数 如:Math.floor(0.4) ->0 Math.floor(1.9)->1
Math.round(num) 返回与num最接近的整数(四舍五入)
Math.max(x,y) 返回指定的数中带有较大的值的那个数
Math.min(x,y) 返回指定的数字中带有最低值的数字
Math.abs() 返回数的绝对值
Math.pow(x,y) x 的 y 次幂
Math.random() 返回介于 0 ~ 1 之间的一个随机数 [0,1)
var str = new String();
alert(str);//输出空字符串
str = new String(“some string here”);
alert(str);//输出字符串"some string here"
//表面上看,这和直接创建的字符串是一样的效果
str = “some string here”;
alert(str);
length 属性,返回字符串的长度 [0,strObj.length-1]
indexOf() 返回字符串内第一次出现子字符串的字符位置
lastIndexOf() 返回字符串中子字符串最后出现的位置
charAt() 返回指定位置的字符。字符串中第一个字符的下标是 0。
replace(str,newstr) 进行文字替换,用newstr替换str返回替换后的字符串的复制
substr(start,length) 返回一个从指定位置开始的指定长度的子字符串,从start开始 截取长度为length的子字符串
substring(start,stop) 返回位于 String 对象中指定位置的子字符串,从start开始(包含),到stop位置结束(不包含)。不接受负的
toLowerCase() 返回一个字符串,该字符串中的字母被转换为小写字母
toUpperCase() 返回一个字符串,该字符串中的所有字母都被转化为大写字母
split() 把字符串分割为字符串数组。
Date类提供了日期和时间的操作。
var mydate=new Date(); 获取当前时间
mydate.getFullYear() 获取年份
mydate.getMonth() 获取月份,月份从0开始的,即0就是1月
mydate.getDate() 获取日期
mydate.getDay() 获取星期 0–>周日 1–>周一
mydate.getHours() 获取当前的小时
mydate.getMinutes() 获取分钟
mydate.getSeconds() 获取秒
mydate.getMilliseconds() 获取毫秒
mydate.getTime() 返回一个整数值,这个整数代表了从1970年1月1日开始计算到Date对象中的时间之间的毫秒数
数组是可以在内存中连续存储多个元素的结构
数组的下标索引从0开始.通过length可获取数组的总长度。
数组的上下界 [0 , myarr.length-1]
1.新建一个长度为零的数组
var 变量名=new Array( );
2.新建一个长度为N的数组
var 变量名=new Array( n );
3.新建一个指定长度的数组,并赋值
var 变量名=new Array( 元素1,元素2,元素3,…);
4.字面量数组
var myarr=[数值1,数值2]; //直接输入一个数组
数组中的序列号:在JavaScript数组中的元素序列号是从0开始计算的,然后依次加1
引用数组元素 :通过数组的序列号可以引用数组元素。
为数组元素赋值或取值,其语法规则是:
为数组元素赋值:数组变量[i]=值;
使用数组元素为变量赋值:变量名=数组变量[i];
即逐个访问数组元素对象,可使用前面学习的for语句。
for(let i=0;i
length获取数组的长度
pop()删除最后一个元素
push()末尾追加一个元素
shift()删除开头的一个元素
unshift()开始位置增加一个元素
indexOf()查看某个元素的位置
reverse() 方法用于颠倒数组中元素的顺序。
sort() 方法用于对数组的元素进行排序。
aplice() 方法用于删除元素的同时添加元素
var person = new Object(); //创建一个对象
person.age = 18; //给对象添加属性
person.weight = "123kg";
alert(obj);//只会输出含糊的[object Object]
alert(obj.weight );//真正的数据全存储在它的属性上面
将方法作为对象的某一个键所存储的值
// 定义方法
function studymethod(){
console.log(" 好好学习,天天向上");
}
let Person = {};
Person.name = "zzy";
// 将studymethod 方法名赋予Person的study键
Person.study = studymethod;
是一种轻量级的数据交换格式,我们称之为JavaScript对象表示法
数据在键/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
var person= {
"name":"Bill Gates",
"street":"Fifth Avenue New York 666",
"age":56,
"phone":"555 1234567“
};
JSON.parse(str) 把字符串转化成json对象
JSON.stringify(obj) 将json转换成字符串
这里主要讲解延时函数和计时函数
延时函数:setTimeout(fn, time) clearTimeout(t);
计时函数:setInterval(fn, time) clearInterval(t);
匿名函数就是没有名字的函数,不能单独存在
//匿名函数
function () {
return 'Zeng';
}
//把匿名函数赋值给变量
var box = function () {
return 'Lee';
};
alert(box());
//函数里的匿名函数
function box () {
return function () { //函数里的匿名函数,产生闭包
return 'Lee';
}
}
闭包是指有权访问另一个函数作用域中的变量的函数
创建闭包的常见的方式,就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。
1.全局作用域
(1)最外层函数和在最外层函数外面定义的变量拥有全局作用域
(2)所有未定义直接赋值的变量自动声明为拥有全局作用域
(3)所有window对象的属性拥有全局作用域
一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等
2.局部作用域(函数作用域)
//闭包 函数内部 实现另一个函数
//外部函数可以将内部函数返回 并且可以将内部变量 进行保存 本例子表现为i可以累加
//想要执行内部函数
var i=1;
function func1()
{
var j=1;
function func2(){
j++;
console.log(i,j);
}
return func2;
}
var f= func1()
f()
f()
var f1= func1()
f1()
f1()