之前定义字符串, 必须使用以下定界符
""或''
它们的缺点是在做连字符串的时候, 不方便:
var username = "小明";
var age = 18;
var str = "你好,我是" + username + "我今年" + age + "岁";
console.log(str)
ES6中用``来做定界符:
var str = `你好`;
console.log(str); //你好
console.log`str`; //[ 'str' ]
console.log(typeof str); //string
var username = "小明";
var age = 18;
var str = `你好,我是${username} 我今年${age}岁`; //你好, 我是小明 我今年12岁
console.log(str)
注意:只有``中能够用${}嵌套变量
动态求值:
var str = `今年是${2022 + 2}`;
console.log(str); //今年是2024
${}能写简单运算、函数调用、变量、Math函数、数组表达式方法(map、reduce、filter、join)、三元运算符(即有返回值的都可以, IIFE也行)
function sum(a,b){
return a + b;
}
var str1 = `哈${Math.random()}哈`;
var str2 = `哈${sum(3,4)}哈`;
var str3 = `哈${5 > 10 ? true : false}哈`;
console.log(str1)
console.log(str2)
console.log(str3)
字符串方法
以前JavaScript只有indexOf方法, 可以用来确定一个字符串是否包含在另一个字符串中。
ES6又提供了三种新方法:
includes() 返回Boolean值, 检查字符串或数组中是否存在某项
startsWith() 返回Boolean值, 检查参数是否在原字符串或数组中的开头
endsWith() 返回Boolean值, 检查参数是否在原字符串或数组中的结尾
var url = "http://www.aiqianduan.com/";
console.log(url.includes("www")); //true
console.log(url.startsWith("http")); //true
console.log(url.endsWith("com/")); //true
这三个方法都支持第二个参数, 表示开始搜索的位置:
let s = 'Hello world!';
console.log(s.includes('Hello', 6)) //false
console.log(s.startsWith('world', 6)) //true
console.log(s.endsWith('Hello', 5)) //true
上面代码表示, 使用第二个参数n时, endsWith的行为与其他两个方法有所不同。它针对前n个字符, 而其他两个方法针对从第n个位置直到字符串结束。
repeat()返回一个新的字符串能够将原字符串重复n次
console.log('★'.repeat(10))