JavaScript es2015经验基础总结
一、作用域 var和es6中的let 的区别。
1、var 是JavaScript中定义全局变量的关键字
2、let 是es6语法中定义变量的关键字 但是let的变量是块级作用域(只能在自己的块里面使用 也就是在大括号里面可以使用在外面是用不了)
实例(var):
'use strict';
if(true){
var a="apple";
}
console.log(a); //控制台输出apple
实例(let)
'use strict';
if(true){
let a="apple";
}
console.log(a); //控制台输出 a is not defined
二、const 常量(也同样遵循块级作用域)
1、var创建的是变量(也就是可以进行二次创建的变量)
2、const 创建的是常量( 一旦创建不能重复赋值(指的是这个重复声明的动作不能发生) )
实例(const):
'use strict'
const fruit = "apple";
console.log(fruit); // 控制台输出 apple
const fruit = "banana";
console.log(fruit); // 控制台输出 Duplicate decalaration “fruit” 重复的声明了fruit 报错
//因为第一次,创建fruit的时候 使用的是const 创建常量,所以不能再重复声明。
注意:限制的是给衡量分配值这个动作,并不是限制值得改变
实例(数组的常量)
'use strict'
const fruit = [];
fruit.push("apple");
fruit.push("banana");
console.log(fruit); //会以数组的形式在控制台输出 里面包含 苹果[0]和香蕉[1];
实例(重新声明常量是错误的)
'use strict'
const fruit = [];
fruit.push("apple");
fruit.push("banana");
fruit = []; //这个动作又重新声明常量fruit了
console.log(fruit); //会报错 重复声明。
三、es6中的结构的使用 数组分配
1、传统的JavaScript数组里的值我们在 控制台打印的话 需要使用数组名称[下标]依次打印
2、在es6中,我们可以使用let定义数组结构,来指定某个数组的返回值逐条分配
实例(传统JavaScript方法)
function breakfast(){
return [ 'apple' , 'drink' , 'cake' ];
}
var tmp = breakfast() , dessert = tmp[0] , drink = tmp[1] , fruit = tmp[2];
console.log(dessert , drink , fruit);
实例(es6的结构使用)
function breakfast(){
return [ 'apple' , 'drink' , 'cake' ];
}
let [ dessert , drink , fruit ] = breakfast(); //定义数组变量 方法执行过后返回值会依次的添加到每一个里面
console.log(dessert , drink , fruit);
四、es6对象
实例(es6)
function breakfast(){
return {drink:"orange" , dessert:"cake" , fruit:"apple"}
}
let {drink:a , dessert:b , fruit:c} = breakfast();
console.log(a , b , c);
注意:在这里let中的 a是变量 drink是上面创建对象中的属性 和 传统JavaScript 对象是相反的变量
实例(传统JavaScript)
function breakfast(){
return {drink:"orange" , dessert:"cake" , fruit:"apple"}
}
var tmp = breakfast(), a=tmp.drink,b=tmp.dessert,c=tmp.fruit
console.log(a);
console.log(b);
console.log(c);
五、es6中的字符模板 template string
实例(传统字符串连接变量)
let dessert = "apple" , drink = "cake";
let breakfast = "今天的早餐是" + dessert + "与" + "drink" + "!";
consloe,log(breakfast);
实例(es6模板字符串 连接 变量)
let dessert = "apple" , drink = "cake";
let breakfast1 = `今天的早餐是 ${dessert} 与 ${drink} !`;
console.log(breakfast1);
六、定义字符串模板标签 (会有一个函数 其中有两个参数 一个string代表原始字符串 value代表模板字符变量)
实例(输出两个参数观察)
let dessert = "cake" , fruit = "apple";
let breakfast = kenchen`今天的早餐吃的是 ${ dessert } 与 ${ fruit } ! ` ;
function kenchen( string , ...value ){
console.log(string); //输出的是字符串数组[0:今天的早餐吃的是, 1:与 , 2:!]
console.log(value); //输出的是模板变量值得数组 [0:cake,1:apple]
}
实例(通过模板标签输出breakfast)
let dessert = "cake" , fruit = "apple";
let breakfast = kenchen`今天的早餐吃的是 ${ dessert } 与 ${ fruit } ! ` ;
function kenchen( string , ...value ){
let breakfast1 = "";
for(let i = 0; i<value.length; i++){
breakfast1 += string[i];
breakfast1 += value[i];
}
breakfast1 += string[string.length-1];
return breakfast1;
}
console.log(breakfast);
解析: kenchen模板标签其实就是一个方法名称,当方法执行结束之后 返回的状态 是返回给kenchen标签的也就是breakfast
返回值其实就是模板标签,也就赋值给了breakfast 从而输出的时候输出breakfast就可以
七、es6中string的判断包含方法
startsWith():判断字符串是以什么字符开头的 startsWith("abc"); 返回布尔值true/false
endsWith() : 判断字符串是以什么字符结束的 endsWith("z") ; 返回布尔值true/false
includes() : 判断字符转是否包含某个字符 includes("cake") ; 返回布尔值true/false
综合实例(es6字符串检索)
let dessert = "cake" , fruit = "apple";
let breakfast = `今天的早餐吃的是 ${ dessert } 与 ${ fruit } ! ` ;
console.log(
breakfast.startsWith("今天s") //返回false
);
console.log(
breakfast.endsWith(" ")// 以空格结束的 所以 返回true
);
console.log(
breakfast.includes("cake") //字符串里是否包含蛋糕 答案 返回true
);
if(breakfast.startsWith("今天是")){
alert("早餐字符串是以今天开头的")
}else{
alert("检索失败")
} //弹出检索失败
八、函数function 函数 设置默认值(参数默认值)
1、es6中给function的参数设置默认值,如果调用函数时不传递参数函数参数将使用默认值,如果传递参数才使用传递的值
实例(参数默认值)
function breakfast(dessert = "cake" , fruit = "apple"){
return `${dessert} ${fruit}`
}
console.log(
breakfast("aaa","orange") //将输出 传递的 aaa 和 apple
);
九、...操作符
1、展开: 比如数组的展开输出
实例(...展开实例)
let fruit = ["apple" , "cake"];
console.log(fruit); //输出的是数组对象
console.log(...fruit);//输出的是appla cake
实例(新创建一个数组 将fruit展开后包含在 新数组中 在输出新数组对象 和 新数组展开结果)
let fruit = ["apple" , "cake"],
fruits = ["orange" , ...fruit];
console.log(fruits); //输出数组对象 第二个包含着第一个 成为一个数组
console.log(...fruits);//输出 orange apple cake
2、用在函数的参数里面 让函数支持更多的参数 数量不受限制也就是----剩余操作符
实例(一个函数多个无线传递参数 输出)
function breakfast(fruit , dessert , ...food){
console.log(fruit , dessert , food);
//输出两个 第一个 是apple cake 后面是一个数组对象 [orange banana]
}
breakfast("apple" , "cake" , "orange" , "banana");
实例(全部显示字符串 ...展开)
function breakfast(fruit , dessert , ...food){
console.log(fruit , dessert , ...food);
//输出 apple cake orange banana
}
breakfast("apple" , "cake" , "orange" , "banana");
十、函数的function参数是对象的形式
1、参数中需要使用大括号{}将参数对象包裹起来 然后在给一个空值 以至于不传递对象的时候不会报错
2、调用函数传递对象参数的时候 也需要使用 {} 将设置的 属性和值包裹起来
实例(function 对象参数(object))
function breakfast(fruit , dessert , {address , home} = {}){
console.log(fruit , dessert , address , home);
}
breakfast("apple" , "cake" , {address:"济南" , home:"北京龙虾餐馆"});
十一、es6中函数的name属性
1、普通函数
2、匿名函数
3、普通函数赋值变量
实例(普通传统name属性)
function breakfase(){
// 外面输出的是 breakfast 函数名
}
console.log(
breakfase.name
);
实例(匿名函数的name属性)
let breakfase1 = function(){
// 外面输出的是 breakfast1 变量匿名函数名
}
console.log(
breakfase1.name
);
实例(传统赋值给变量时的name)
let breakfase2 = function ArrayCheck(){
// 外面输出的是 ArrayCheck 优先级高的 函数名
}
console.log(
breakfase2.name
);
十二、es6的function创建的新方式
//es6写法 创建函数的新的方式
let breakfast = dessert => console.log(dessert);
breakfast("apples");
breakfast是函数的名称
dessert第一个是 形参
=> 是es6函数的写法
console.log(dessert); 函数的返回值
//es5的写法
var breakfast = function breakfast(dessert){
console.log(dessert);
}
//上面是传递一个参数的 传递多个参数的需要怎么设置呢
let breakfast = (dessert , fruit) => console.log(dessert + " " + fruit);
breakfast("cake" , "apple");
//es5写法
var breakfast = function breakfast(dessert , fruit){
console.log(dessert + " " + fruit);
}
breakfast("cake" , "apple");
//如果加大括号 就相当于 里面的值需要被返回 需要return
let breakfast = (dessert = "cake" , fruit = "apple") => {
return dessert + " " + fruit;
};
console.log(breakfast("drink" , "banana"))
//es5写法
var breakfast = function breakfast(dessert , fruit){
return dessert + " " + fruit;
}
console.log(breakfast("drink" , "banana"));
JavaScript es2015经验基础总结的更多相关文章
- JavaScript学习02 基础语法
JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...
- 从头开始学JavaScript 笔记(一)——基础中的基础
原文:从头开始学JavaScript 笔记(一)--基础中的基础 概要:javascript的组成. 各个组成部分的作用 . 一.javascript的组成 javascript ECMASc ...
- javascript之正则表达式基础知识小结
javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料. 元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要 ...
- 【15】ES6 for Humans: The Latest Standard of JavaScript: ES2015 and Beyond
[15]ES6 for Humans 共148页: 目前看到:已经全部阅读. 亚马逊地址: 魔芋:总结: 我先看的是阮一峰的在线书籍.这本书的内容很多都与之重复的. 居然卖¥463.也是没谁了. ...
- JavaScript中的基础测试题
Java ...
- php面试专题---12、JavaScript和jQuery基础考点
php面试专题---12.JavaScript和jQuery基础考点 一.总结 一句话总结: 比较常考察的是JavaScript的HTML样式操作以及jQuery的选择器和事件.样式操作. 1.下列不 ...
- 100多个很有用的JavaScript函数以及基础写法大集合
100多个很有用的JavaScript函数以及基础写法大集合 1.document.write("");为 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:docume ...
- JS获取url中query_str JavaScript RegExp 正则表达式基础详谈
面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL ...
- JavaScript : 零基础打造自己的类库
写作不易,转载请注明出处,谢谢. 文章类别:Javascript基础(面向初学者) 前言 在之前的章节中,我们已经不依赖jQuery,单纯地用JavaScript封装了很多方法,这个时候,你一定会想, ...
随机推荐
- Struts2学习笔记整理(三)
Struts2的输入校验 之前对请求参数的输入校验一般分为两部分:1.客户端校验,也就是我们写js代码去对客户的误操作进行过滤 2.服务端校验, 这是整个应用组织非法数据的最后防线. Struts2 ...
- JAVA入门[20]-Spring Data JPA简单示例
Spring 对 JPA 的支持已经非常强大,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建.事务处理等 JPA 相关的处理.Spring Data JPA更是 ...
- 从0开始做垂直O2O个性化推荐-以58到家美甲为例
从0开始做垂直O2O个性化推荐 上次以58转转为例,介绍了如何从0开始如何做互联网推荐产品(回复"推荐"阅读),58转转的宝贝为闲置物品,品类多种多样,要做统一的宝贝画像比较难,而 ...
- 【转载】Spring AOP详解 、 JDK动态代理、CGLib动态代理
Spring AOP详解 . JDK动态代理.CGLib动态代理 原文地址:https://www.cnblogs.com/kukudelaomao/p/5897893.html AOP是Aspec ...
- 查看SQL Server当前会话的隔离级别
查看SQL Server当前会话的隔离级别 DBCC USEROPTIONS
- Linux网络配置。Win10能ping虚拟机但虚拟机ping不通Win10,关闭Win10防火墙就好。
仅主机模式:配置VMnet1与虚拟机在同一个网段 ifconfig查看网卡名: ifconfig ens33 192.168.1.2: ifconfig查看是否配置成功: 在Windows物理机上pi ...
- 【批处理】IF ERRORLEVER语句顺序注意
@echo off dir d:\dddddd if errorlevel 1 goto 1 if errorlevel 0 goto 0 rem 两行if语句不可交换位置,否则失败了也会显示成功. ...
- 函数PYXX_READ_PAYROLL_RESULT的dump问题
发现有两个HR的后台定时任务出现dump,日志表示,是PYXX_READ_PAYROLL_RESULT产生了类型冲突的异常CX_SY_DYN_CALL_ILLEGAL_TYPE. 日志标题部分: 类别 ...
- 手动安装cloudera manager 5.x(tar包方式)详解
官方共给出了3中安装方式:第一种方法必须要求所有机器都能连网,由于最近各种国外的网站被墙的厉害,我尝试了几次各种超时错误,巨耽误时间不说,一旦失败,重装非常痛苦.第二种方法下载很多包.第三种方法对系统 ...
- HDU4992 求所有原根
Primitive Roots Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...