<!-- 函数传参:永远都是值传递 -->
<script>
const f1 = (x) => (x = 10);
let m = 5;
// m:入参,当前传入的是一个基本类型,原始类型,整数
f1(m);
console.log("m = %d", m);
const f2 = (x) => (x.a = 10);
let o = {
a: 5,
b: 6
}
f2(o);
console.log('o.a = ', o.a);
// 这里虽然o.a的属性被修改了,但不是更新,
// 模板字面量和标签函数
let name = "朱老师";
let str = "hello" + name;
let str = `Hello ${name}`; //这行代码等价于上面的代码
// 字面量:Hello
// 插值:${name}
console.log(str);
// 1.模板字面量:将表达式/插值嵌入到字符串中
//模板字面量内部有2部分组成:字符串字面量,变量插值
let menus = ['首页', '视频', '文章'];
let htmlStr = `
<nav>
<a herf="">${menus[0]}
<a herf="">${menus[1]}
<a herf="">${menus[2]}
</nav>
`;
console.log(htmlStr);
// 2.标签函数,(模板函数),自定义模板字面量的一些行为
const hello = (name) => (alert(name));
hello("谢谢哦哦");
//参数约定:
// 1.第一个参数:所有字符串字面量组成的数组
// 2.第二个参数:变量插值组成的数组
let sum = (strs, a, b) => {
console.log(strs);
console.log(a, b);
}
let a = 5, b = 6;
sum`${a}+${b}=`;
// // rest: 归并参数
sum = (strs, ...args) => {
console.log(strs);
console.log(args);
}
let c = 7;
sum`${a}+${b}+${c}=`;
数组,对象,解构
//解构赋值
// 数组解构
// 等号左边是右边的模板,必须长得一样
let [a, b, c] = [1, 2, 3];//完全结构
[a, b] = [1, 2, 3];//不完全结构
[a, b, ...c] = [1, 2, 3, 4, 5, 6, 7, 8, 9];//把后面所有的参数给到C里面
//对象解构
let shangpin = { id: 1, sname: "手机" };
let id, sname;
// ({ id, sname } = { id: 1, sname: "手机" });
({ id, sname } = shangpin);
console.log(id, sname);
//参数解构
//数组传参
let qiuhe = ([a, b]) => a + b;
// 上面的a,b相对于等号左边的模板,下面的30,50相当于等号右边的插值
console.log(qiuhe([30, 50]));
访问器属性的get,set操作
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>访问器属性的get,set操作</title>
</head>
<body>
<!-- bingd(),call(),apply() -->
<!-- this:执行上下文,程序的运行环境 -->
<script>
let fwqsx = {
data: { name },
get name() {
return this.data.name;
},
set name(v) {
this.data.name = v;
}
};
fwqsx.name = "老师";
console.log(fwqsx.name);
// 访问器属于的优先级高于同名的普通属性
fwqsx.data.name = "老师1";
console.log(fwqsx.data.name);
</script>
</body>
</html>