本文主要介绍了ES6中模板字符串和箭头函数的基本使用
//普通字符串
const name='hello'
console.log(name)
//模板字符串
const name1=`world`
console.log(name1)
<script>
const person={
name:'June',
age:18,
sex:'male'
};
const info='我的名字是'+person.name+',性别:'+person.age;
console.log(info)
</script>
<script>
const person={
name:'June',
age:18,
sex:'male'
};
const info= `我的名字是:${person.name},性别:${person.sex}`;
console.log(info)
</script>
<script>
const info='第一行\n第二行'
console.log(info)
</script>
(2)模板字符串
方法一:通过转义字符来实现换行
<script>
const info=`第一行\n第二行`
console.log(info)
</script>
结果:
方法二:通过换行实现换行效果
模板字符串中,可以通过直接换行来实现上述效果,不过所有的空格、换行或缩进都会被保留在输出之中
<script>
const info=`第一行
第二行`
console.log(info)
</script>
结果:
如果输出结果不想有空格,挪动一下要换行的文字内容:
结果:
举例
<script>
const username="June"
const person ={
age: 18,
sex: 'male' ,
};
const getSex = function (sex) {
return sex === 'male' ?'男':'女';
}
const info = `${username}, ${person.age + 2}, ${getSex( person.sex)}`;
console.log (info);
</script>
const add =(x,y)=>{
return x+y;
};
console.log(add(2,2));
分析:
首先,参数和函数体之间由箭头=>连接;由于构成的函数是匿名函数,因此无法直接给箭头函数起名字,得将其赋给一个变量或者常量,变量名或常量名即函数名;接着就可以在其他地方通过调用函数名来调用函数了。
const add = x=>{
return x+1;
};
console.log(add(2));
const add = ()=>{
return 1+1;
};
console.log(add());
constadd=(x,y)=>x+y;
console.log(add(1, 1));
const add = (x,y) => ({
value:x + y
});
console.log add((1, 1));
(1)全局作用域中的this指向window
console.log(this); // window
(2)一般函数中的this指向
function add(){
console.log(this);
}
add();
const obj = {
num: 10,
fn: function() {
setTimeout(() => {
console.log(this.num);
}, 1000);
}
};
obj.fn(); // 输出10
分析:
在这个例子中,箭头函数作为setTimeout的回调函数,在调用时使用了外部环境obj的this,所以this指向obj,输出了10。如果改用普通的函数声明,则this指向setTimeout函数本身,无法访问obj对象中的num属性。
(1)作为构造函数
如果使用箭头函数来作为构造函数,当实例化构造函数的时候会报错。因为箭头函数没有this,而构造函数有,当实例化构造函数的时候,里面的this会指向
(2)需要this指向调用对象的时候
箭头函数没有自己的 this,它会使用其父作用域中的 this 值,从而出现一些意外的行为。
(3)需要使用arguments的时候
当需要在函数内部使用arguments关键字时,箭头函数也不适用。箭头函数没有自己的arguments对象,所以不能在内部使用它。