补充点:1、let const   2、字符串模板   3、箭头函数   4、对象的单体模式  5、面向对象

一、定义变量

A、var

特点:

1、定义全局变量

2、可以重复定义

3、变量名提升

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>声明变量</title>
</head>
<body>
<script>
{
var a =66;
console.log('in'+ a);
}
// 在块级作用域的变量,可以在全局中使用
// 1.var 定义的是全局变量
console.log('out'+ a);
// 2.var可以重新定义变量
var a = 88;
console.log('new'+a);
// 3.变量名提升
// 过程 var b -> 提升, 打印 b, b没有赋值,结果:undefined
console.log(b); //undefined
var b = 10;
</script>
</body>
</html>

B、let

特点:

1、块级变量

2、在同一作用域中,不可以重新定义

3、不支持变量名提升

{
let b = 5;
console.log('b1', b)
}
// 1.let 声明块级变量
// console.log('b2', b); // b is not defined
let b = 10;
console.log('b3', b) // 2.let 不能重新声明变量
// let b = 20;
// console.log('b4', b) // Identifier 'b' has already been declared // 3. let不支持变量提升
console.log(c); // Cannot access 'c' before initialization
let c = 2;

C、const

特点:

1、定义常量

2、在同一作用域中,不能重复定义

3、不支持变量提升

const a = 10;
// 1.const 定义的是常量,常量不能被修改
// a = 20;
// console.log(a) // Assignment to constant variable. // 2. 不能重复声明
// const a = 20;
// console.log(a) // Identifier 'a' has already been declared // 3. const 定义变量,不支持变量提升
console.log(b);
const b = 30; // Cannot access 'b' before initialization

二、字符串模板

1、反引号(table键,上面的键)

2、格式:${变量名}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>字符串模板</title>
</head>
<body>
<script>
var name = 'tom';
var age = 24;
// 注意:
// 1. 反引号
// 2.${变量名}
var info = `${name},今年${age}岁!!!`;
console.log(info) </script>
</body>
</html>

三、箭头函数

A、简介

格式:

f = function(a, b){} ---> f = (a, b)=>{}

注意:

1、形参为一个数时,括号可以省略不写

2、{}中只要return 时,{}也可以省略不写

B、箭头函数的坑

1、this

传统函数的this,指向调用的对象

箭头函数的this,指向声明对象的对象

// 字面量方式创建对象
var person = {
name: 'tom',
age: 24,
inf0: function(){
// 1. 普通函数 this 指向 调用 对象 既 person
console.log(this); // {name: "tom", age: 24, inf0: ƒ}
}
};
person.inf0(); // 字面量方式创建对象
var person2 = {
name: 'alex',
age: 43,
info: ()=>{
// 1.箭头函数 this 指向 声明 对象 及 windows
console.log(this); // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, parent: Window, …}
}
}; person2.info();

2、arguments

    // 2.箭头函数不能使用 arguments
var foo = function(){
console.log(arguments); // Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
}
foo(1, 2, 3); var bar = ()=>{
console.log(arguments); // Uncaught ReferenceError: arguments is not defined
}
bar(3, 2, 1);

四、对象的单体模式

目的:解决箭头函数的this坑

// 字面量方式创建对象
var person = {
name: 'tom',
age: 34,
// 格式对比:
// info: ()=>{}
// info(){}
info(){
console.log(this.name); // tom
}
}
person.info();

五、面向对象

1、ES5

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
// 构造函数的方法创建对象,注意名字要大写
function Person(name, age){
self.name = name;
self.age = age;
}
// 创建该对象的方法
Person.prototype.showname = function(){
console.log(self.name);
}
   // 实例化对象
var p1 = new Person('tom', 24);
p1.showname(); // tom
</script>
</body>
</html>

ES6

// 定义类
class Person{
// 构造方法
constructor(name, age){
self.name = name;
self.age = age;
}
// 自定义方法
showname(){
console.log(self.name);
}
} // 实例化对象
var p2 = new Person('tom', 24);
// 调用方法
p2.showname(); // tom

注意:ES6面向对象的语法比ES5面向对象的语法更像面向对象

JS ES6补充的更多相关文章

  1. js es6 map 与 原生对象区别

    区别 object和Map存储的都是键值对组合.但是: object的键的类型是 字符串: map的键的类型是 可以是任意类型: 另外注意,object获取键值使用Object.keys(返回数组): ...

  2. js 对象补充

    js 对象 普通对象与对象简写 js 没有字典类型,只有对象类型,对象可以完全替代字典来使用 js 中对象的属性名,都采用字符串类型,所以就可以省略字符串的引号标识 对象中属性值为函数时,称之为方法, ...

  3. js ES6 多行字符串 连接字符串

    1. 以前,js多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用` ... `表示: 旧版写法 alert("你好,\n 我叫\n Olive" ...

  4. js ES6 Set和Map数据结构详解

    这篇文章主要介绍了ES6学习笔记之Set和Map数据结构,结合实例形式详细分析了ECMAScript中基本数据结构Set和Map的常用属性与方法的功能.用法及相关注意事项,需要的朋友可以参考下   本 ...

  5. JavaScript (JS) 函数补充 (含arguments、eval()、四种调用模式)

    1. 程序异常 ① try-catch语法    测试异常 try-catch语法代码如下: try { 异常代码;     try中可以承重异常代码, console.log(“try”)  出现异 ...

  6. 2019.7月-前端面试总结(H5+C3+JS+ES6+Vue+浏览器)

    第二次面试 HTML HTML5中的新标签,举例一下 canvas绘画,本地离线存储localStorage,sessionStorage,video和audio元素,语义化元素,表单类型(date, ...

  7. js原型补充

    js定义函数: <script> function A() {} let a1 = new A(); let a2 = new A(); // 为A类添加原型 => 类似于类属性 A ...

  8. JS&ES6学习笔记(持续更新)

    ES6学习笔记(2019.7.29) 目录 ES6学习笔记(2019.7.29) let和const let let 基本用法 let 不存在变量提升 暂时性死区 不允许重复声明 块级作用域 级作用域 ...

  9. js/es6 元素拖动

    元素事件:鼠标按下事件/鼠标移动事件/鼠标松开事件 元素样式:让元素脱离文档流,采用绝对定位的方式. 一.鼠标按下事件 当鼠标在元素上面按下时,保存元素的初始偏移量和鼠标按下时的坐标,然后在状态变量里 ...

随机推荐

  1. yum安装gcc和gcc-c++

    本次总结参考 博客:http://blog.csdn.net/robertkun/article/details/8466700  ,非常 感谢他的博客,帮我解决了问题. 今天安装gcc-c++时出现 ...

  2. C# 通过编程的方法在桌面创建回收站快捷方式

    基本所有的桌面都会存在回收站快捷方式,如果想要多创建几个快捷方式,点开就是回收站,请看本文的方法 在引用 Windows Script Host Object Model 这个 COM 方法之后可以使 ...

  3. vue-learning:3-template-{{}}-and-v-html

    插值{{ }} 和 v-html 本节开始,我们按如下顺序学习vue模板API-指令.点击各部分的DEMO可在线查看代码 输出字符串文本内容的插值:{{}} 输出HMTL元素作为内容的指令:v-htm ...

  4. vue-learning:22 - js - directives

    directives 在讲解视图层指令时,我们讲到ref特性,使用它我们可以获取当前DOM元素对象,以便执行相关操作. <div id="app"> <input ...

  5. 修改Samba密码后无法登录

    Samba修改用户名密码后,无法登陆 之后每次进去都是以这样的username和passwd进去的,如何才能使用其他的用户来重新登录samba server呢? 首先使用在开始菜单里面输入cmd: 进 ...

  6. spring-redis-session 自定义 key 和过期时间

    对于分布式应用来说,最开始遇到的问题就是 session 的存储了,解决方案大致有如下几种 使用 spring-session 它可以把 session 存储到你想存储的位置,如 redis,mysq ...

  7. java连接elasticsearch:查询、添加数据

    导入jar包 <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport --> <depe ...

  8. QT信号和槽函数学习笔记

    //connect 函数有4个参数 分别是 发送者 信号.接受者 ,槽 //connect(sender,signal,receiver,slot) /* * 信号和槽 * 信号 就是一个普通的函数 ...

  9. JVM探秘:内存分配与回收策略

    本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 内存分配一般关注的是对象在堆上分配的情况,对象主要分配在新生代的Eden区中,如果启用 ...

  10. javascript-void keyword

    javascript-void keyword 写在前面 ECMA-262定义了ECMAScript所支持的关键字(keyword),关键字不能用作ECMAScript程序的标识符(Indetifie ...