目录
- var nums = new Array(5);
-
- nums[0] = 10;
- nums[1] = 10;
- nums[2] = 10;
-
- console.log(nums[0]);//10
- console.log(nums[3]);//undefined
-
- console.log(nums[5]);//undefined
- console.log(nums.length);//5
- // JavaScript可以访问数组中不存在的索引,会返回undefined,不代表数组已经扩容
-
- nums[5] = 10;
- console.log(nums.length);//6
- // 这时候元素增加,数组长度不够用,所以数组自动扩容。
属性
length
设置或返回数组中元素的数目
方法
join( )
把数组的所有元素放入一个字符串,通过一个分隔符进行分隔
sort()
对数组排序
push()
向数组末尾添加一个或更多元素,并返回新的长度
concat()
合并两个数组
var 日期对象=new Date(参数)
参数格式:MM DD,YYYY,hh:mm:ss
- var date = new Date(2018,0,7);
- //年 月 日 月份从0开始0-11
方法
getDate()
返回 Date 对象的一个月中的每一天,其值介于1~31之间
getDay()
返回 Date 对象的星期中的每一天,其值介于0~6之间(注:0代表周日)
getHours()
返回 Date 对象的小时数,其值介于0~23之间
getMinutes()
返回 Date 对象的分钟数,其值介于0~59之间
getSeconds()
返回 Date 对象的秒数,其值介于0~59之间
getMonth()
返回 Date 对象的月份,其值介于0~11之间(注:0代表1月份)
getFullYear()
返回 Date 对象的年份,其值为4位数
var 字符串对象=new String(参数)
参数 是要存储在 String 对象中或转换成原始字符串的值
属性
length
字符串的长度
方法
charAt()
返回在指定位置的字符(注:字符串中第一个字符的下标是0)
concat()
连接字符串
replace()
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
split()
把一个字符串分割成字符串数组
indexOf()
返回某个指定的字符串值在字符串中首次出现的位置
lastIndexOf()
返回一个指定的字符串值最后出现的位置
match()
可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
toLowerCase()
把字符串转换为小写
toUpperCase()
把字符串转换为大写
substr()
从起始索引号提取字符串中指定数目的字符(不建议使用)
substring()
提取字符串中两个指定的索引号之间的字符
slice()
提取字符串的某个部分,并以新的字符串返回被提取的部分
ceil()
对数进行上舍入
floor()
对数进行下舍入
round()
把数四舍五入为最接近的数
random()
返回0.0~1.0之间的随机数
命名函数:如果函数有名字,就是命名函数
匿名函数:如果函数没有名字,就是匿名函数
区别:
因为非匿名函数在定义时,就已经创建函数对象和作用域对象;所以,即使未调用,也占用内存空间;
匿名函数,仅在调用时,才临时创建函数对象和作用域链对象;调用完,立即释放,所以匿名函数比非匿名函数更节省内存空间
理解了上面这两句,下面这段代码的输出结果就能理解了
- function f1() {
- console.log("哈哈哈");
- }
- f1();//你好
-
- function f1() {
- console.log("你好");
- }
- f1();//你好
-
- //如果在页面中有两个同名的命名函数,后面的一个命名函数会覆盖前面的命名函数
-
- var f2 = function() {
- console.log("函数表达式");
- };
- f2();//函数表达式
- var f2 = function() {
- console.log("函数声明");
- };
- f2();//函数声明
- //如果在页面中有两个同名的匿名函数,后面的匿名函数不会覆盖前面的匿名函数
如果在页面中有两个同名的命名函数,后面的一个命名函数会覆盖前面的命名函数
如果在页面中有两个同名的匿名函数,后面的匿名函数不会覆盖前面的匿名函数
- //先声明函数
- function f1(){
- console.log("先声明函数,再调用");
- }
- f1();
-
- //声明函数的同时进行调用
- (function f2(){
- console.log('声明函数的同时调用函数');
- })();
函数是有数据类型,它的数据类型是:function
- //回调函数:在一个函数中去调用另外一个函数,调用的这个函数是由参数传递过来的
- function f1(fn){
- console.log('我是f1函数里的输出语句');
- fn();
- }
- function f2(){
- console.log("我是回调函数哦~");
- }
- f1(f2);
- function max(num1,num2){
- if(num1>num2){
- return num1;
- }else{
- return num2;
- }
- }
- var max =max(1000,200);
- console.log(max);
函数的返回值可以是函数
- function f1() {
- console.log("f1函数调用了");
- return function() {
- console.log("我是f1函数里return返回的结果");
- };
- }
- //ff是一个匿名函数
- var ff=f1();
- ff();
JS没有作用域的概念,但是,函数中定义的变量只能在函数中使用
全局变量和局部变量区别:作用域不同、声明位置不同、生存期不同
全局变量:在函数外声明的变量,网页上的所有脚本和函数都能访问它
局部变量:在函数内部声明的变量(使用var),只能在函数内部访问它
可以在不同的函数中使用名称相同的局部变量
生存期
局部变量在函数运行以后被删除
全局变量在页面关闭后被删除
隐式全局变量
指声明变量时没有使用声明变量的关键字
隐式全局变量是可以被删除的,但是全局变量是不能被删除的
沿着作用域链一级一级地搜索的过程。搜索过程始终从作用域链底端开始,然后逐级向上回溯,直到找到为止(如果找不到,通常会报错)
变量的声明提前了----提前到当前所在的作用域的最上面
函数的声明也会被提前---提前到当前所在的作用域的最上面