JavaScript的进阶学习--函数和基本对象的解析
在上一篇博客中我们对JavaScript的基础内容进行了梳理讲解,帮助大家实现快速入门,感兴趣的朋友可以自己去查看上一篇博客JavaScript的引入方式和基础语法的快速入门与学习,在本篇博客中我们将进一步讲解有关于JavaScript中有关于函数和对象的内容。
一.函数
函数的作用可以类比Java中的方法,是被设计为执行特定任务的代码块。在 JavaScript 里,函数能像其他数据类型一样被使用,比如赋值给变量、作为参数传递、作为返回值等。
1.函数定义
函数声明
函数声明使用 function 关键字,会进行提升,即在代码执行前就被加载到作用域中。由于JS是弱类型语言,所以在定义函数时参数不需要类型,返回值也不要类型,在返回时在函数内部直接使用return返回即可。
//基本语法
function 函数名(参数1, 参数2) {//要执行的代码;
}
//示例
function add(a, b) {return a + b;
}
函数表达式
函数表达式将函数赋值给一个变量,不会进行提升,function关键字后不在需要加函数的名字。
const subtract = function(a, b) {return a - b;
};
箭头函数
箭头函数是 ES6 引入的简洁语法,没有自己的 this
、arguments
等,适合简单的回调函数。
const multiply = (a, b) => a * b;
// 当只有一个参数时,括号可省略
const square = num => num * num;
// 当函数体有多行代码时,需要用花括号包裹
const greet = (name) => {const message = `Hello, ${name}!`;return message;
};
2.函数调用
定义好函数后,可通过函数名加括号来调用函数,若有参数则在括号内传入。
// 调用函数声明定义的函数
const result1 = add(3, 5);
console.log(result1); // 输出: 8// 调用函数表达式定义的函数
const result2 = subtract(8, 3);
console.log(result2); // 输出: 5// 调用箭头函数
const result3 = multiply(4, 6);
console.log(result3); // 输出: 24
3.函数参数
普通参数
函数可以有多个参数,调用时按顺序传入对应的值。
function fullName(firstName, lastName) {return `${firstName} ${lastName}`;
}
const name = fullName('John', 'Doe');
console.log(name); // 输出: John Doe
默认参数
ES6 允许为函数参数设置默认值,当调用时未传入该参数,就使用默认值。
function greet(name = 'Guest') {return `Hello, ${name}!`;
}
console.log(greet()); // 输出: Hello, Guest!
console.log(greet('Alice')); // 输出: Hello, Alice!
剩余参数
剩余参数使用 ...
语法,可将多个参数收集到一个数组中。
function sum(...numbers) {return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3, 4)); // 输出: 10
4.函数返回值
函数可以使用 return 语句返回一个值,若没有 return 语句,函数默认返回 undefined。
function getMessage() {return 'This is a message.';
}
const message = getMessage();
console.log(message); // 输出: This is a message.function noReturn() {// 没有 return 语句
}
const result = noReturn();
console.log(result); // 输出: undefined
二.JavaScript中的对象
在 JavaScript 里,对象是一种非常重要的数据类型,用于存储键值对的集合。对象是一种复合数据类型,用于存储多个相关数据和功能,是该语言的核心特性之一。
1.对象创建
1.Array对象
JavaScript中Array对象用于定义数组:具有长度可变,类型可变的特点。
基本使用
对象定义语法:
//语法一:
var 变量名 = new Array(元素列表);
//语法二:
var 变量名 = [元素列表];
对象定义示例:
//语法一:
var arr = new Array(1,2,3,4);
//语法二:
var arr = [1,2,3,4];
访问: 基本和Java一致
//语法
arr[索引] = 值;//示例
arr[10] = "hello";
length属性
length属性:用于快速获取array对象的长度
//定义一个数组
var arr = [1,2,3,4,5];// 数组长度
alert(arr.length);//输出5
常用方法
forEach():用于遍历数组中每一个有值的元素,并调用一次传入的函数
arr.forEach(function(item,index,arr) {alert(item);
})//item:当前正在处理的数组元素。
//index(可选):当前正在处理的元素的索引。
//array(可选):调用 forEach() 方法的数组。
上边的代码和for循环的区别在于,for循环还会遍历无值的元素
push():将新元素添加到数组的末尾,并返回新的长度
//一次添加一个
arr.push(1000);
alert(arr);//一次添加多个
arr.push(1,2,3,4);
alert(arr);const fruits = ['苹果', '香蕉'];
const newLength = fruits.push('橙子', '草莓');
console.log(fruits); // 输出: ['苹果', '香蕉', '橙子', '草莓']
console.log(newLength); // 输出: 4
splice():方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
语法简介:
start
:指定修改的开始位置(从 0 计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位。deleteCount
(可选):整数,表示要移除的数组元素的个数。如果deleteCount
被省略,或者它的值大于等于array.length - start
,则从start
位置开始删除数组的所有元素。如果deleteCount
是 0 或者负数,则不移除元素。item1, item2, ...
(可选):要添加进数组的元素,从start
位置开始。如果不指定,则splice()
将只删除数组元素。
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
代码示例:
const colors = ['红色', '蓝色', '绿色', '黄色'];// 从索引 2 开始删除 1 个元素
const removed = colors.splice(2, 1);
console.log(colors); // 输出: ['红色', '蓝色', '黄色']
console.log(removed); // 输出: ['绿色']// 从索引 1 开始删除 0 个元素,并插入 '紫色' 和 '粉色'
colors.splice(1, 0, '紫色', '粉色');
console.log(colors); // 输出: ['红色', '紫色', '粉色', '蓝色', '黄色']
2.String对象
基本使用
对象定义语法:
//语法一:
var 变量名 = new String("...");
//语法二:
var 变量名 = "...";
对象定义示例:
//语法一:
var str = new String("Hello String");
//语法二:
var str = "Hello String";
length属性
length属性:用于快速获取String对象的长度
//定义一个数组
var arr = [1,2,3,4,5];// 数组长度
alert(arr.length);//输出5
常用方法
charAt():返回在指定位置的字符
const str = 'Hello, World!';
console.log(str.charAt(1)); // 输出: e
console.log(str.charAt(100)); // 输出: 空字符串
索引从下标0开始。
indexOf(): 方法用于在字符串中查找指定子字符串第一次出现的位置。如果找到匹配项,则返回该子字符串的起始索引;如果未找到,则返回 -1。
语法:
str.indexOf(searchValue [, fromIndex])
searchValue
:要查找的子字符串。fromIndex
(可选):开始查找的索引位置,默认值为 0。
代码示例:
const str = 'Hello, World!';
console.log(str.indexOf('o')); // 输出: 4
console.log(str.indexOf('o', 5)); // 输出: 8
console.log(str.indexOf('xyz')); // 输出: -1
trim():会从一个字符串的两端删除空白字符。空白字符包括空格、制表符、换行符等。
const str = ' Hello, World! ';
console.log(str.trim()); // 输出: Hello, World!
substring():提取字符串中两个指定的索引号之间的字符
语法:
str.substring(indexStart [, indexEnd])
indexStart
:必需,要提取的子字符串的起始索引。indexEnd
(可选):要提取的子字符串的结束索引(不包含该位置的字符)。如果省略该参数,则提取到字符串末尾。
代码示例:
const str = 'Hello, World!';
console.log(str.substring(0, 5)); // 输出: Hello
console.log(str.substring(7)); // 输出: World!