1.标签模板:它本质上不是模板而是函数的另一种调用形式。
标签:就是事先封装好的函数
参数:它后面写的字符串
例如:
**这一步就相当于模板标签
var name = "工藤新一";
var boy = "绅士男孩";
var girlfrend = "名字叫毛利兰的女朋友";
注意:这个可以用一个函数封装起来,然后直接调用,这个就是标签
var str = `他的名字是${name},我是一个帅气的${boy},我有一个漂亮的${girlfrend}
$前面的就是数组里字符串
参数:标签模板后面所接的字符串
以${}作为分隔线,将固定的字符串放进数组里,然后${}里面的变量作为后面的参数
2.标记模板
参数1:被插入的变量分割而成的字符串数组
参数2:被插入的变量(可以有很多个)
例如:
var name = "工藤新一";
var boy = "男孩";
var girlfrend = "名字叫毛利兰的女朋友";
封装的函数
function intro(parts){
console.log(parts);
打印结果:
["", ",我的名字是", ",我是一个", "帅气的", ",我有一个漂亮的", ""]
0: ""
1: ",我的名字是"
2: ",我是一个"
3: "帅气的"
4: ",我有一个漂亮的"
5: ""
被插入的变量(可以有很多个)如果写了第一个(parts),这几个就不用写了
// console.log(a1);
// console.log(a2);
// console.log(a3);
// console.log(a4);
console.log(arguments);
打印结果:
["大家好", "工藤新一", "很绅士的", "男孩", "名字叫毛利兰的女朋友"]
0: (6) ["", ",我的名字是", ",我是一个", "帅气的", ",我有一个漂亮的", "", raw: Array(6)]
1: "大家好"
2: "工藤新一"
3: "很绅士的"
4: "男孩"
5: "名字叫毛利兰的女朋友"
var res =Array.prototype.slice.call(arguments,1);
console.log(res);
打印结果:
["大家好", "工藤新一", "很绅士的", "男孩", "名字叫毛利兰的女朋友"]
0: "大家好"
1: "工藤新一"
2: "很绅士的"
3: "男孩"
4: "名字叫毛利兰的女朋友"
var s = "";
for(let i = 0;i
1.indexof
//indexof()方法:查找字符串中是否包含某个字符串
例如:
参数1:需要查询的目标元素的首个字符串(即使后面再出现一样的,也只查询到第一个出现的结果)
参数2:从第几个索引开始查(数字)
var str = "工藤新一是帅的不接受反驳";
*****返回找到目标元素第一个字符串位置的索引(从0开始), 如果没找到就返回 -1
console.log(str.indexOf("新一")); //2
console.log(str.indexOf("新二")); //-1
console.log(str.indexOf("接受")); //8
console.log(str.indexOf("接收")); //-1
console.log(str.indexOf("新一",2)); //2
console.log(str.indexOf("新二",2)); //-1
console.log(str.indexOf("接受",3)); //8
/console.log(str.indexOf("接受",5)); //8
console.log(str.indexOf("接收",3)); //-1
注意点:
这个方法无法查询到数组里面包含空值 或者 包含NaN的,因为判断会出错 只能使用includes()方法
var arr = [11,22,33,44,NaN];
console.log(arr.indexOf(NaN)); //-1
var arr1 = new Array(5);
/console.log(arr1.indexOf(undefined)); //-1
indexof方法:
参数1:需要查询的目标元素的首个字符串(即使后面再出现一样的,也只查询到第一个出现的结果)
参数2:从第几个索引开始查(数字)
返回值:返回找到目标元素第一个字符串位置的索引(从0开始), 如果没找到就返回 -1
注意:这个方法无法查询到数组里面包含空值 或者 包含NaN的,因为判断会出错 只能使用includes()方法
includes
includes()方法:检测字符串或者数组中是否包含某一个子字符串或者元素
例如:
var str3 = "工藤新一是帅的不接受反驳";
console.log(str3.includes("新一")); //true
console.log(str3.includes("新二")); //false
console.log(str3.includes("接受")); //true
console.log(str3.includes("接收")); //false
console.log(str3.includes("新一",2)); //true
console.log(str3.includes("新二",2)); //false
console.log(str3.includes("接受",8)); //true
console.log(str3.includes("接受",9)); //false
console.log(str3.includes("接收",8)); //false
注意点:
var arr = [11,22,33,44,NaN];
console.log(arr.includes(NaN)); //true
var arr1 = new Array(5);
console.log(arr1.includes(undefined)); //true
includes方法:
参数1:需要查询的目标元素的首个字符串
参数2:从第几个索引开始查(数字)
返回值:返回类型为布尔类型
找到目标元素就返回 true 没有找到就返回false
includes 和 indexof的区别:返回值不同 且includes更实用 indexof局限性大
startswith : 判断是否以某一个字符串 开头
参数1:要找到的目标元素
参数2::表示 从索引为几 的字符串开始查找
endswith : 判断是否以某一个字符串 结尾
参数2: 表示 从索引为几 及之前的 元素开始查找(不算自身)
返回值:为布尔类型
例如:
var sayHi = "hello world!";
console.log(sayHi.startsWith("hello",3)); //false
console.log(sayHi.endsWith("!",11)); //false 因为第11个是字符是d,d在!之前,所以没有找到 如果d在感叹号之后 才是对的
console.log(sayHi.endsWith("!",16)); //true 因为 !在第16之前 所以找得到
1.普通函数里面的this,谁调用this,this就指向谁,这个里面的this是在调用的时候才确定的
例如:
这个里面的this是指向window,因为没有调用
function stu(){
console,log(this);
}
stu();
//这里的this就指向obj,因为obj调用了c()
看调用,就注意有没有 . 和()
var obj = {
a : "新一",
b : "小兰",
c:function(){
console.log(this)
}
obj.c();