- 开发无止境 -
Data: 2017-11-20 10:30:58Form: JournalClick: 16
browser
在线代码转换let
命令ES6
新增了 let
命令,用来声明变量let
所声明的变量,只在 let
命令所在的代码块内有效
# 1、在{}里用let创建的变量,在外部使用就会报错,找不到
{
var a = 10;
let b = 1;
}
console.log(a);
console.log(b);
# 2、在for循环里用let创建的遍历,在外部使用会报错
# 2.1、let命令很适合在for循环中使用
for (let i = 0; i < 10; i++) {
console.log(i);
}
console.log(i);
# 3、变量提升:没有创建变了,打印就会报错
# 3.1、var命令会发生“变量提升”现象,即变量可以在声明之前使用
console.log(a); // 打印undefined
var a = 1;
console.log(b); // 报错ReferenceError
let b = 2;
# 4、暂时性死区:简称 TDZ
# 4.1、只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
var php = 'php中文网';
{
php = 'PHP中文网'; // 报错ReferenceError
let php;
}
var php = 'php中文网';
{
let php; // 创建相同的变量名,在这个区域就不受外部变量影响
php = 'abc';
console.log(php);
}
console.log(php);
# 5、不允许重复创建
let a = 10;
var a = 1;
# 5.1、2个let也会报错
let a = 10;
let a = 1;
const
命令const
声明一个只读的常量。一旦声明,常量的值就不能改变。
# 1、创建常量
const PHP = "php中文网";
console.log(PHP);
PHP = "php中文网"; // 重复复制,会报错TypeError
# 2、声明常量,就必须立即初始化赋值
const PHP; // 报错SyntaxError
# 3、只在声明所在的块级作用域内有效,跟let一样
{
const PHP = "php中文网";
}
console.log(PHP);
# 4、暂时性死区:简称 TDZ
{
console.log(PHP); // 报错ReferenceError
const PHP = "php中文网";
}
# 5、如果常量类型是类,可以改变常量里的数据
function teacher(name,age){
this.name = name;
this.age = age;
}
const t = new teacher('欧阳克','38');
t.getname = function(){
console.log(this.name);
}
t.getname();
// 5.1、改变常量的值,就会报错
t = '欧阳克';
// 5.2、可以改变常量里面的值
t.setname = function(name){
this.name = name;
}
t.setname('朱天蓬');
t.getname();
Arrow
箭头函数
# 1、新写法
let fun = x => x*x;
console.log(fun(10));
# 2、老写法
let fun = function(x){
return x*x;
}
console.log(fun(10));
# es6箭头函数: x 是 值, => 是 function
# 3、多个参数或没有参数,增加()号
let fun = (x,y) => x*y;
console.log(fun(10,8));
let fun = () => 10*8;
console.log(fun());
# 4、多条语句,增加{}号,和return
let fun = (x,y) => {
console.log(x,y);
return x*y;
}
console.log(fun(10,8));
# 5、返回对象时,必须在对面外增加括号
let fun = () => ({id:1,name:'欧阳克'});
console.log(fun());
this
的使用this
,它的 this
是继承而来的,默认指向在定义它时所处的对象(即外层代码块的 this
)
# 1、this代表当前,php变量调用,this代表php变量
let php = {
name : 'php中文网',
teacher(title){
console.log(title);
console.log(this);
console.log(this.name);
}
}
php.teacher('es6基础语法');
# 2、想使用外部的this,可以在外部把this赋值给新变量
let that = this;
let name = '欧阳克';
let php = {
name : 'php中文网',
teacher(title){
console.log(that);
console.log(that.name);
}
}
php.teacher('es6基础语法');
# 3、如果teacher属性里在创建个方法,this还是代表window
let that = this;
let name = '欧阳克';
let php = {
name : 'php中文网',
teacher(title){
let say = function(){
console.log(this);
console.log(that);
}
say();
}
}
php.teacher('es6基础语法');
# 4、在teacher属性想使用php变量,就是this代表php变量
let that = this;
let name = '欧阳克';
let php = {
name : 'php中文网',
teacher(title){
let that_t = this;
let say = function(){
console.log(this);
console.log(that);
console.log(that_t);
}
say();
}
}
php.teacher('es6基础语法');
// 5、箭头函数,this代表php变量,不需要重新赋值
let that = this;
let name = '欧阳克';
let php = {
name : 'php中文网',
teacher(title){
let that_t = this;
let say = ()=>{
console.log(this);
console.log(that);
console.log(that_t);
// window是可以直接使用的
console.log(window);
}
say();
}
}
php.teacher('es6基础语法');
map()
方法
# 1.1、方法里使用匿名方法,打印数组中的值,每次拿出一个值,给变量v
let arr = [2,4,6,8,10];
arr.map(function(v){
console.log(v);
});
# 1.2、k是下标,从0开始,跟循环中的k一样的。
arr.map(function(v,k){
console.log(k);
console.log(v);
});
# 1.3、箭头函数
arr.map(v=>{
console.log(v);
});
# 1.4、返回处理结果
let ret = arr.map(v=>v*v);
console.log(ret);
reduce()
方法filter()
方法forEach()
方法startsWith()
方法
let url = "https://www.php.cn";
if(url.startsWith("http://")){
alert("http协议");
}else if(url.startsWith("https://")){
alert("https协议");
}else{
alert("未知协议");
}
endsWith()
方法
let url = "https://www.php.cn/static/images/PHPlogo.png";
if(url.endsWith(".png")){
alert("这是png图片");
}else if(url.endsWith(".jpg")){
alert("这是jpg图片");
}else{
alert("未知后缀");
}
# 1、字符串里有html代码,并且换行,需要用+号
let str = '<div>欧阳克</div>' +
'<div>朱天蓬</div>' +
'<div>灭绝师太</div>';
console.log(str);
# 2、也可以用\斜杠
let str ='<div>欧阳克</div>\
<div>朱天蓬</div>\
<div>灭绝师太</div>';
console.log(str);
# 3、使用es6的模版字符串(``)
let str = `<div>欧阳克</div>
<div>朱天蓬</div>
<div>灭绝师太</div>
`;
console.log(str);
# 4、使用变量
let arr = ['欧阳克','朱天蓬','灭绝师太'];
let str = '<div>'+arr[0]+'</div>' +
'<div>'+arr[1]+'</div>' +
'<div>'+arr[2]+'</div>';
console.log(str);
# 4.1、直接在模版字符串(``)使用变量
let arr = ['欧阳克','朱天蓬','灭绝师太'];
let str = `<div>${arr[0]}</div>
<div>${arr[1]}</div>
<div>${arr[2]}</div>
`;
console.log(str);
# 1、使用...把数组展开
let arr = [1,2,3,4,5,6];
console.log(...arr);
# 2、展开重新复制给新数组
let arr1 = ['欧阳克','朱天蓬'];
let arr2 = ['灭绝师太','西门大官人'];
let arr3 = [...arr1, ...arr2];
console.log(arr3);
# 1、使用数组展开传值
function demo(name1,name2){
console.log(name1 + name2);
}
let arr = ['欧阳克','朱天蓬'];
demo(...arr);
# 2、使用数组展示接收,接收后是一个数组类型
function demo(...name){
console.log(name);
}
demo('欧阳克','朱天蓬');
let arr = ['欧阳克','朱天蓬'];
demo(...arr);
# 3、接收剩余参数,只能放到最后
function demo(name1,name2,...name){
console.log(name1);
console.log(name2);
console.log(name);
}
demo("欧阳克","朱天蓬","灭绝师太","西门大官人");
let arr = ["欧阳克","朱天蓬","灭绝师太","西门大官人"];
demo(...arr);