js_中级

数组

1.创建数组

(1)利用new创建数组
var 数组名 = new Array(); //空数组
var arr = new Array(5);//这个5表示数组的长度为5
var arr1 = new Array(5,2);//等价于[5,2],创建的这个数组存了两个数组元素5,2
(2)利用数组字面量创建数组
var 数组名 = [];
var 数组名 = ['小白',12,true];

2.获取数组元素

格式:数组名[索引号]

3.数组长度

格式:数组名.length

4.新增数组元素

  • 利用length修改长度
  • 修改索引号,追加数组元素

5.检测是否为数组

(1)instanceof
var arr = [];
var obj = {};
console.log(arr instanceof Array);
console.log(obj instanceof Array);
(2)Array.ifArray(参数)
console.log(Array.isArray(arr));
console.log(Array.isArray(obj));

6.添加和删除数组元素的方法

(1)push()

在数组的末尾添加一个或多个数组元素。

  • push()参数直接写要追加的新元素;
  • push()完毕之后,返回的结果新数组的长度
  • 原数组也会发生变化;
var arr = [1,2,3];
console.log(arr.push(4,'dkf'));
console.log(arr);
(2)unshift()

在数组的开头添加一个或多个数组元素

  • unshift()参数直接写要追加的新元素;
  • unshift()完毕之后,返回的结果新数组的长度
  • 原数组也会发生变化;
console.log(arr.unshift('ted',5));
console.log(arr);
(3)pop()

删除数组的最后一个元素。

  • pop是可以删除数组的最后一个元素,一次只能删除一个元素;
  • pop()没有参数;
  • pop完毕后,返回的结果是 删除的那个元素;
  • 原数组也会发生变化;
(4)shift()
  • shift是可以删除数组的第一个元素,一次只能删除一个元素;
  • shift()没有参数;
  • shift完毕后,返回的结果是 删除的那个元素;
  • 原数组也会发生变化;

7.数组排序

(1)数组翻转
var arr = [1,2,3,4,5];
arr.reverse();
console.log(arr);
(2)数组排序
var arr = [3,2,6,4,2,7,3];
arr.sort(function(a,b)){
         return a - b;//升序排序
         // return b - a;降序排序
         }
console.log(arr);

8.数组索引方法

indexOf(数组元素)

lastIndexOf(数组元素)

返回该数组元素的索引号。

  • 只返回第一个满足条件的索引号;
  • 如果在该数组里面找不到元素,则返回 -1;

9.数组转换为字符串

(1)toString()
var arr = [1,3,2,4];
console.log(arr.toString());
(2)join(分隔符)
var arr1 = ['a','s','d'];
console.log(arr1.join());//a,s,d
console.log(arr1.join(-));//a-s-d
console.log(arr1.join(&));//a&s&d

10.例子

var arr = ['red','green','blue','prin'];
var str = '';
var sep = '*';
for(var i = 0;i < arr.length;i++){
	str += arr[i] + sep;
}
console.log(str);

基本包装类型

字符串的不可变

函数

1.声明函数

  • function 函数名() {函数体代码 }
  • var 变量名 = function(){函数体代码}
var fun = function(a){
	console.log('dsf');
	console.log(a);
}
fun('dfs');//调用
//注:fun是变量名不是函数

2.调用函数

//调用函数
函数名();

3.函数形参和实参个数不匹配问题

  • 实参数 = 形参数 正常输出
  • 实参数 > 形参数 只取到形参个数
  • 实参数 < 型参数 多大形参定义为undefined,结果为NaN

:在JavaScript中形参默认值是undefined。

4.函数的返回值格式

function 函数名(){
	return 需要返回的结果;
}
函数名;

  • return之后代码不执行;
  • return只返回一个值,若用都好隔开多个值,以最后一个为准;
  • 函数若没有return返回undefined;

5.arguments的使用

当我们不确定有多少个参数传递的时候,可以用arguments来获取。arguments是当前函数的一个内置对象。所有对象都内置了一个arguments对象,arguments对象中存储了传递的所有实参。

function fn(){//这里没有形参
    console.log(arguments);//里面存了所有传递过来的实参
    console.log(arguments.length);
}
fu(1,2,3,4);

arguments展现形式是一个伪数组:

  • 具有length属性;
  • 按索引方式存储数据;
  • 不具有数组的push、pop等方法;
//按照数组的方式遍历arguments
for(var i = 0;i < arguments.length;i++){
	console.log(arguments[i]);
}

//求任意个数的最大值
function getMax(){
	var max = arguments[0];
	for(var i = 1;i < arguments.length;i++){
		if(arguments[i] > max){
			max = atguments[i];
		}
	}
	return max;
}

变量的作用域

1.全局变量

  • 全局变量在代码的任何位置都可以使用;
  • 在全局作用域下var声明的变量是全局变量;
  • 特殊情况下,在函数内不使用var声明的变量也是全局变量;
2.局部变量
  • 只能在该函数内部使用;
  • 在函数内部var声明的变量是局部变量;
  • 函数的形参实际上是局部变量;

**区别:**全局变量只有在浏览器关闭时才会被销毁,比较占内存。

预解析

js引擎会把js里面所有的var和function提升到当前作用域最前面;

代码从上往下执行;

对象

1.创建对象

(1)利用对象字面量创建对象{}
//var obj = {};  创建了一个空对象
var obj = {
    uname: '张三',
    age: 18,
    sex: '男',
    sayHi: function(){  //匿名函数
        console.log('hi');
    }
}
(2)利用 new Object 创建对象
var obj = new Object();
obj.uname = '张三';
obj.age = 18;
obj.sex = '男';
obj.sayHi = function(){
    conosole.log('Hi');
}
(3)利用构造函数创建对象

格式

function 构造函数名(){
    this.属性 = 值;
    this.属性 = function(){
        
    }
}
new 构造函数名();
  • 构造函数名字首字母大写
  • 构造函数不需要return就可以返回结果;
  • 调用构造函数必须用new;

例子

function Star(uname,age,sex){
    this.name = uname;
    this.age = age;
    this.sex = sex;
}
var ldh = new Star('刘德华',18,'男');
console.log(ldh.name);
console.log(ldh['sex']);

2.使用对象

(1)对象名.属性名
(2)对象名[‘属性名’]
(3)对象名.方法名()
console.log(obj.uname);
console.log(obj['age']);
obj.sayHi();

3.遍历对象

格式:for (变量名 in 对象){}

for (var k in obj){
    console.log(k);//k 变量 输出得到属性名
    console.log(obj[k]);//obj[k]得到属性值
}
  • for in 里面的变量,我们习惯写k或key

Math

Math对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整,最大值等)可以使用Math中的成员。

1.常用方法

成员简介
Math.PI圆周率
Math.floor()向下取整
Math.ceil()向上取整
Math.round()四舍五入(注意:-3.5 结果是-3)
Math.abs()绝对值
Math.max()/Math.min()求最大和最小值

2.Math对象随机数方法

random()返回一个随机的小数 (0<= x <1)

获得一个两数之间的随机整数

function getRandomInt(min,max){
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min)) + min;//不含最大值,含最小值
}

获得一个两数之间的随机整数,包括两个数在内

function getRandomIntInclusive(min,max){
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;//含最大值,含最小值
}

Date()

Date() 日期对象,是一个构造函数 必须使用new来调用创建我们的日期对象。

1.使用Date()

var date = new Date();//如果没有参数 返回当前系统的当前时间
console.log(date);

2.参数的常用写法

数字型:2019,10,01

var date = new Date(2001,10,1);
console.log(date);//返回的是11月不是10,一月是从0开始

字符串型:‘2019-10-1 8:8:8’

var date = new Date('2019-10-1 8:8:8');

3.日期格式化

方法简介
getFullYear()获得年
getMonth()获得当月(0-11)
getDate()获得当天日期
getDay()获得星期几(周日 0 到周六 6)
getHours()获得小时
getMinutes()获得分钟
getSeconds()获得秒
//写一个 x年x月x日星期x
        var date = new Date();
        var year = date.getFullYear();
        var month = date.getMonth();
        var dates = date.getDate();
        var arr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
        var day = date.getDay();
        console.log('今天是:' + year + '年' + month + '月' + dates + '日' + arr[day]);
//封装一个函数返回当前的时分秒
        function getTime(){
            var time = new Date();
            var h = time.getHours();
            h = h < 10 ? '0' + h : h;
            var m = time.getMinutes();
            m = m < 10 ? '0' + m : m;
            var s = time.getSeconds()
            s = s < 10 ? '0' + s : s;
            return h + ':' + m + ':' + s;
        }
        console.log(getTime());

4.获得Date总毫秒数(时间戳)

不是当前时间的毫秒,而是距离1970.01.01过了多少毫秒。

  • 通过valueOf()或getTime()获得
var date = new Date();
console.log(date.valueOf());
console.log(date.getTime());
  • 简单写法(最常用写法)
var date = +new Date();//+new Date()返回的就是总的毫秒数
console.log(date);
  • H5新增的获得总的毫秒数的方法
console.log(Date.now());
//倒计时
function countDown(time){
            var nowTime = +new Date();
            var inputTime = +new Date(time);
            var times = (inputTime - nowTime) / 1000;
            var d = parseInt(times / 60 / 60 / 24);
            d = d < 10 ? '0' + d : d;
            var h = parseInt(times / 60 / 60 % 24);
            h = h < 10 ? '0' + h : h;
            var m = parseInt(times / 60 % 60);
            m = m < 10 ? '0' + m : m;
            var s = parseInt(times % 60);
            s = s < 10 ? '0' + s : s;
            return d + '天' + h + '时' + m + '分' + s + '秒';
        }
        console.log(countDown('2021-10-10 13:00:00'));

字符串操作方法

1.根据字符返回位置

str.indexOf(‘要查找的字符’,[起始的位置])

2.根据位置返回字符

(1)charAt(index)
var str = 'andy';
console.log(str.charAt(3));

//遍历所以有字符
for(var i = 0;i < str.length;i++){
    console.log(str.charAt(i));
}
(2)charCodeAt(index)

返回相应索引号的字符ASCII值 目的:判断用户按下了哪个键

var str = 'andy';
console.log(str.charCodeAt(0));//97
(3)str[index]

H5 新增

var str = 'andy';
console.log(str[0]);//a

3.连接字符串

语法:concat(‘字符串1‘,‘字符串2’,’字符串2’…)

var str = 'andy';
console.log(str.concat('red'));

4.截取字符串

语法:substr(‘截取的起始位置’, ‘截取几个字符’)

var str = 'asdf';
console.log(str.substr(2,2));//df

5.替换字符

格式:replace(‘被替换的字符’, ‘替换为的字符’)

  • 只替换第一个字符;

6.字符转换为数组

格式:split(‘分隔符’)

  • split没有分隔符无法转换;
  • 区分join()把数组转换为字符串
var str = '1,2,3,4';
console.log(str.split(','));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值