JavaScript基础篇(2)

11 函数

函数的作用:完成一个功能的代码块。

11.1 函数的定义

function 函数名() {
    
    
    功能代码块;
}

11.2 函数的调用

// 语法
函数名();

11.3 函数的返回值

如果函数有返回值,需要通过return返回,如果没有返回值就不写。

11.4 函数的参数

// 形参是在定义函数时
function 函数名(形参1,形参2,形参3.......){
    
    
代码块
}

// 实参是在调用的时候针对有参函数传递的具体的值
函数名(实参1,实参2.....);

11.5 函数声明

  • 利用函数关键字 function 自定义函数(命名函数)
function fn() {
    
    
    console.log("Hi~")
}
fn();
  • 函数表达式(匿名函数)

var 变量名 = function() {}

var fun = function(aru) {
    
    
	console.log('我是函数表达式');
	console.log(aru);
}
fun('pink老师');

11.6 递归函数

  • 就是自己调用自己
  • 将一个大的问题转换为比原问题小的同一问题
  • 递归函数要知道递归终止的条件、递归操作

12 对象

12.1 对象的定义

对象就是键值对和集合。

键值对:key: value

12.2 对象的创建

12.2.1 利用对象字面量创建对象
var obj = {
    
    
	uname: '张三疯',
	age: 18,
	sex: '男',
	sayHi: function() {
    
    
		console.log('hi~');
	}
}
12.2.2 利用new Object 创建对象
var obj = new Object(); // 创建了一个空的对象
	obj.uname = '张三';
	obj.age = 11;
	obj.sex = '女';
	obj.sayHi = function() {
    
    
		console.log('你好');
	}
console.log(obj.uname);
console.log(obj['sex']);
obj.sayHi(); // 调用这个匿名函数
12.2.3 利用构造函数创建对象
// 语法格式:
function 构造函数名() {
    
    
	this.属性 =;
	this.方法 = function(){
    
    }
}

12.3 对象的操作

对对象中的元素进行增、删、改、查等操作。

var obj = {
    
    
            name: "张三",
            age: 14,
        }
        console.log(obj);
        // 1. 获取对象中键值对的对数
       console.log(Object.keys(obj).length);
        // 2. 向对象中插入新的键值对: 1> 利用 . 的形式 2> 利用 [] 的形式
        obj.gender = "女";
        obj["tel"] = "13892290267";
        console.log(obj);
        // 3. 修改对象中键值对属性及值,如果里面原本就有属性则修改,如果没有则是添加
        obj.gender = '男';
        console.log(obj);
        obj['e-mail'] = "[email protected]";
        console.log(obj);
        // 4. 删除对象中的属性
        delete obj.tel;
        console.log(obj);
        // 5. 遍历对象:采用 for...in 的方法,遍历出的是对象的值
        for (var k in obj) {
    
    
            console.log(k); // 遍历的是对象中的键
            console.log(obj[k]); // 遍历的是对象中的值
        }

13 数组

13.1 数组的定义

数组:存放一组有序数据的集合,是一种特殊的变量。

13.2 数组的创建

13.2.1 利用数组字面量创建数组
var arr = [1, 2, 3];
13.2.2 利用new Array()创建数组
var arr2 = new Array();  // 创建了一个空的数组
var arr3 = new Array(2); // 这个2 表示数组的长度为2,里面有两个空的数组元素
var arr4 = new Array(2, 3); // 等价于[2,3],表示里面有两个数组元素是2和3
console.log(arr4);

13.3 数组的操作

13.3.1 获取数组的长度

语法:数组名.length

13.3.2 增加数组元素
arr2[0] = 5;
arr2[1] = 10;
arr2[15] = 30;
console.log(arr2);
console.log("arr2的数组长度是:" + arr2.length); // arr2的数组长度是:16
// 稀疏数组:在定义数组中,数组中有一些元素没有内容(undefined),但是其长度是最后一个索引号+1。
13.3.3 修改数组元素
arr1[1] = "banana";
console.log(arr1); // ['apple', 'banana', 'orange', 'watermelon']
13.3.4 删除数组元素
delete arr2[1];
console.log("arr2删除后的数组长度是:" + arr2.length); // arr2删除后的数组长度是:16
// 虽然删除了数组的元素,但是数组的长度还是不变。

13.4 遍历数组

  • for … in … 遍历

  • for 循环遍历

13.5 遍历对象数组

		// 数组中包含对象
        var arr3 = [{
    
    
            name: "中国"
        }, {
    
    
            name: "英国",
        }, {
    
    
            name: "美国"
        }]
        for (var i = 0; i < arr3.length; i++) {
    
    
            console.log(arr3[i].name);
        }

在这里插入图片描述

扫描二维码关注公众号,回复: 15719133 查看本文章
		// 对象中包含数组
		var arr4 = {
    
    
            fruits: ["apple", "pear", "orange", "watermelon"],
            toies: ["train", "gun", "plane"]
        }
        for (var k in arr4) {
    
    
            console.log(arr4[k]);
            // (4) ['apple', 'pear', 'orange', 'watermelon']
            // (3) ['train', 'gun', 'plane']
            var value = arr4[k];
            console.log(value.length); // 4 3
            for (var i = 0; i < value.length; i++) {
    
    
                console.log(value[i]);
            }
        }

在这里插入图片描述

13.6 数组中常用的方法

1) concat(): 创建一个新数组并返回,不会改变原数组

2)join(): 把每个数组元素转换成一个字符串,然后把这些字符串连接起来

3)pop(): 删除数组中的最后一个元素,把数组长度减1,并且返回它删除的元素的值。如果数组已经为空,则pop()不改变数组,返回undefined。

4)push(): 在数组尾部添加一个新的元素,它直接修改array,而不是创建——个新的数组。

5)shift(): 删除数组中的第一个元素,返回那个元素的值,并且将余下的所有元素前移一位,以填补数组头部的空缺。如果数组是空的,将不进行任何操作,返回undefined。注意,该方法不创建新数组,而是直接修改原有的数组。

6)unshift(): 在数组头部添加一个新的元素,并将已经存在的元素顺次地移到较高的下标处。注意,该方法不创建新数组,而是直接修改原有的数组。

7)reserve(): 颠倒数组中的顺序

8)slice(): 将返回数组的一部分,或者说是一个子数组。返回的数组包含从start 开始到end之间的所有元素,但是不包括end所指的元素。即前闭后开。如果没有指定end,返回的数组包含从start开始到原数组结尾的所有元素。负值表示倒数的意思。-1表示倒数第一个;-2表示倒数第二个。

console.log(arr6.slice(1, 3)); // ['watermelon', 'banana']
console.log(arr6.slice(1, -1)); //  ['watermelon', 'banana', 'strawberry']
console.log(arr6.slice(-3)); // ['banana', 'strawberry', 'peach']

9)sort(): 对数组中的元素进行排序,按照数字编码的顺序。如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。

console.log(arr6.sort()); //  ['banana', 'peach', 'pitaya', 'strawberry', 'watermelon']
var arr10 = [12, 7, 34, 2, 45];
console.log(arr10.sort()); // [12, 2, 34, 45, 7]
arr10.sort(function(a, b) {
    
     // 这里的是匿名函数,因为匿名函数只需要调用一次,不需要二次调用,所以我们不提供命名,可以直接使用匿名函数进行调用。
	return a - b;
})
console.log(arr10); // [2, 7, 12, 34, 45]
arr10.sort(function(a, b) {
    
    
    return b - a;
})
console.log(arr10); // [45, 34, 12, 7, 2]

10)splice(): 添加、删除、替换数组中的元素。一共有三个属性, start:开始插入、删除、替换的元素的索引;deleteCount:需要删除的元素个数;value:要插入的元素,从start索引处开始。

var arr11 = ["piano", "erhu", "guzheng"];
// 向数组中索引为1的位置添加两个元素"suona","guitar"
arr11.splice(1, 0, "suona", "guitar"); // ['piano', 'suona', 'guitar', 'erhu', 'guzheng']
// 删除从索引为2开始的两个元素
arr11.splice(2, 2); // ['piano', 'suona', 'guzheng']
// 替换索引为1元素为"drumset"
arr11.splice(1, 1, "drumset") // ['piano', 'drumset', 'guzheng']
console.log(arr11);

11)toString(): 把数组转换成字符串,并且返回这个字符串。

传值调用和传引用调用
// 传引用调用:向函数中传递的是对象(引用数据类型),形参的改变会影响实参
		function swap(arr, i, j) {
    
    
            //arr=[1,2,3,4];i=0;j=2
            console.log(arr[i], arr[j]); // 1  3
            var temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            // 交换的只是num1,num2
            console.log(arr[i], arr[j]); // 3  1
        }
		
        var nums = [1, 2, 3, 4];
        swap(nums, 0, 2)
        console.log(nums[0], nums[2]); // 1 3
// 传值调用:向函数中传递具体的值(基本数据类型),形参的改变不会影响实参
        function swap(num1, num2) {
    
    
            console.log(num1, num2); // 10 20 
            var temp = num1;
            num1 = num2;
            num2 = temp;
            // 交换的只是num1,num2
            console.log(num1, num2); // 20 10
        }

		var a = 10;
        var b = 20;
        swap(a, b);
        console.log(a, b); //  10  20

14 数字常用的方法

  • Number.MAX_VALUE:最大数值

  • Number.MIN_VALUE:最小数值

  • isNaN():检验是否是非数字型

  • toFixed():对数字进行格式化,小数点后进行四舍五入

  • toString():将数字型转换为字符串型

  • valueOf():返回一个数值的原始数值

15 日期常用的方法

// 创建日期对象,使用构造函数
var newTime = new Date();
console.log(newTime); // Wed Dec 28 2022 14:18:43 GMT+0800 (中国标准时间)
  • 获取年份:getFullYear()

  • 获取月份,月份是从0-11记录1-12月份的,通常要加一:getMonth()

  • 获取一月中的某一天:getDate()

  • 获取时:getHours()

  • 获取分:getMinutes()

  • 获取秒:getSeconds()

  • 获取星期几:getDay()

  • 获取毫秒:getMilliseconds()

  • 时间戳:getTime()

时间戳:时间点与格林威治时间相差的毫秒数。
在这里插入图片描述

// 获取两个时间的时间差
var oldTime = new Date(2022, 11, 10, 15, 34, 56);
var subSecondes = (time1 - oldTime) / (24 * 60 * 60 * 1000);
console.log(subSecondes);

16 数学中常用的方法

  • abs():计算绝对值

  • floor():对数值向下取整,即小于这个数的最大整数。

  • ceil():对数值向上取整,即大于这个数的最小整数

  • max()/min():返回多个值中的最大/最小数

  • pow(x, y):计算x的y次幂,x为底数,y为幂数

  • random():返回一个0-1的随机数

  • round():四舍五入为最接近的整数。对于0.5将它上舍入

  • sqrt(x):计算x的平方根

注意:sqrt()计算数字的平方根,用pow()可以计算一个数的任意次根。

17 字符串常用的方法

  • trim():去除首尾空格

  • charAt():返回字符串的第n个字符

  • concat():连接字符串

  • length:字符串的长度

  • slice():从字符串中抽取一个子串,里面有两个属性,start起始位置,end结束位置,但是不包括end,负数表示从倒数开始

  • substring(from ,to) :截取一个子串

  • 字符串大小写的转换:toUpperCase()转大写,toLowerCase()转小写

  • indexOf():检索字符串第一次出现的位置

  • lastIndexOf():检索字符串最后一次出现的位置

注意:如果 indexOf 和 lastIndexOf 查找的子串不存在则返回 -1

  • concat():拼接字符串,也可以使用 + 进行替换

  • split():分割字符串,可以匹配正则表达式

  • replaceAll():替换字符串,可以匹配正则表达式,替换一个与正则匹配的子串

  • match(reg) :从字符串中找到与正则匹配的内容,存入数组中,匹配的结果与正则的修饰符g有关。如果有g,进行全局匹配,否则只匹配一次

var fruits = "apple pear watermelon orange peach banana";
// 找到所有包含字母p的水果
var result = fruits.match(/[a-z]*p[a-z]{3,}/);
console.log(result); // ["apple","pear", "peach"]
  • search(regexp):检索第一个与regexp相匹配的子串的起始位置。如果没有找到任何匹配的子串,则返回-1。
var fruits = "apple pear watermelon orange peach banana";
var index = fruits.search(/\d+/);
console.log(index); // -1

猜你喜欢

转载自blog.csdn.net/weixin_54026054/article/details/128840956
今日推荐