function some(ele, arr = []) {
let flat = false;
for(let i=0;i<arr.length;i++){
if(ele === arr[i]){
flat = true;
break
}
}
return flat;
}
let re = some('荔枝', ['苹果', '香蕉', '橘子', '荔枝', '梨子'])
console.log(re) // true
let re1 = some('榴莲', ['苹果', '香蕉', '橘子', '荔枝', '梨子'])
console.log(re1) // false
// 封装函数返回元素的下标 [1, 5, 10, 22, 8, 7]
// 1. 封装函数 findIndex,传递2个参数 元素、数组
function findIndex(ele, arr = []) {
let index = -1;
for(let i =0;i<arr.length;i++){
if(ele === arr[i]){
index = i;
}
}return index;
}
let index1 = findIndex(10, [1, 5, 10, 22, 8, 7])
console.log(index1) // 2
let index2 = findIndex(8, [1, 5, 10, 22, 8, 7])
console.log(index2) // 4
let index3 = findIndex(88, [1, 5, 10, 22, 8, 7])
console.log(index3) // -1
<script>
// 使用逻辑或运算符为y设置默认参数
function fn(x, y) {
y = y || 0; // 如果y是undefined或假值,则将其设置为0
console.log(x + y);
return x + y; // 返回数字型的结果
}
fn(1); // 输出:1,因为y是undefined,所以被设置为0
</script>
<script>
// 使用ES6默认参数
function fn(x, y = 0) { // 如果y未传递,则默认为0
console.log(x + y);
return x + y; // 返回数字型的结果
}
fn(1); // 输出:1,因为y使用了默认值0
</script>
优先使用ES6的第二种,第一种容易出问题。
对象相关知识
在JavaScript中,对象是一种复杂的数据类型,它允许你存储多个值作为一个单独的实体。这些值可以是不同的数据类型,如数字、字符串、布尔值,甚至其他对象或数组。对象在JavaScript中扮演着非常重要的角色,以下是它们的一些主要作用:
- 封装数据:对象允许你将相关的数据(属性和方法)封装在一起,形成一个单一的实体。这使得数据更易于管理和维护。
- 表示现实世界中的实体:对象可以用来表示现实世界中的实体,如人、车、动物等。每个对象都可以有自己的属性和方法,这些属性和方法描述了该实体的特征和行为。
- 实现模块化编程:通过将相关的数据和功能封装在对象中,可以实现模块化编程。这有助于减少代码之间的耦合度,提高代码的可读性和可维护性。
- 继承和多态:JavaScript中的对象支持原型链和继承机制,这使得对象可以继承其他对象的属性和方法。这有助于实现代码的重用和扩展性。同时,多态性也使得对象能够根据不同的上下文表现出不同的行为。
- 作为函数的返回值或参数:对象可以作为函数的返回值或参数传递,这使得函数能够处理更复杂的数据结构,并在函数之间传递复杂的数据。
- 与DOM交互:在Web开发中,JavaScript经常用于与DOM(文档对象模型)交互。DOM本身就是一个对象树,JavaScript对象可以用来表示和操作DOM元素,实现页面的动态效果和交互功能。
function在对象外面叫函数,在对象里面叫方法。
let ming = {
uname:'小宝',
uage : 18,
usex : '男',
song:function(){
console.log("唱歌")
},
dance:function(){
console.log("喜欢跳舞");
}
}
ming.song()
遍历对象:
对象没有数组一样的length属性,所以无法确定长度
对象里面的无序的键值对,没有规律,不像数组里有规律
let students = [
{name:'小栏',age:12,gender:'男',home:'山东'},
{name:'小话',age:12,gender:'男',home:'山东'},
{name:'小白',age:13,gender:'女',home:'山东'},
{name:'小率',age:15,gender:'男',home:'山东'},
]
for(let i=0;i<students.length;i++){
for(let k in students[i]){
console.log(students[i][k])
}
}
内层循环遍历的是students[i]
的属性,k
是每个学生对象的属性名,students[i][k]
是对应的属性值。使用console.log(k + ': ' + students[i][k])
,我们可以打印出每个属性的名字和值。
表格渲染:
let students = [
{ name: '小栏', age: 12, gender: '男', home: '山东' },
{ name: '小话', age: 12, gender: '男', home: '山东' },
{ name: '小白', age: 13, gender: '女', home: '山东' },
{ name: '小率', age: 15, gender: '男', home: '山东' },
]
for (let i = 0; i < students.length; i++) {
document.write(`
<tr>
<td>${i + 1}</td>
<td>${students[i].name}</td>
<td>${students[i].age}</td>
<td>${students[i].gender}</td>
<td>${students[i].home}</td>
</tr>
`)
}
内置对象:
Math数学对象
作用:提供数学方法
console.log(Math.floor(1.1))//1
console.log(Math.ceil(1.1)) //2
console.log(Math.round(-1.5)) //-1
最后一个为四舍五入,可以理解为离谁进取谁。
知识对比:parseInt(1.2) parseInt('1.2') parseInt里面可以放字符串
它直接去掉了小数部分