H5是移动网站的一个名称,手机上各种能够被浏览器打开的网页都可以被笼统的称作H5。
HTML5 是下一代的 HTML。
新特性:
1. 新语义元素(新增标签和属性),有利于代码可读性和SEO;
2. sessionStorage、localStorage和indexedDB加强本地存储;
3. 离线web应用;
4. 表单新增功能;
5. CSS3;
6. 地理定位。
1. Java是强类型语言,而JavaScript是弱类型语言;
Java是强类型语言,使用变量前必须首先在程序中声明;在Java中,在编译时会检查变量的类型。而,JavaScript是弱类型语言,具有更宽松的语法和规则。
2. 数据类型不同;
3. 执行环境不同;
Java应用程序可以在任何虚拟机(JVM)或Web浏览器中运行,执行时会使用更多内存。而JavaScript代码仅在浏览器上运行,因为JavaScript是仅针对浏览器开发的。它运行时只需要很少的内存,因此它可以在网页中被使用。
4. 定位不同;
Java是一种完全面向对象的OOP编程语言,我们想要运用Java写东西就必须先设计好对象;而,JavaScript不同,它是基于对象的一种OOP脚本语言,它为开发者提供了自带的很多内部对象,要更为简易省时。
5. 联编方式不同;
Java采用静态联编,是一种静态类型语言。Java的对象引用必须在编译时就进行,编译器需要实现强类型检查。而JavaScript不同,它采用动态联编,是一种动态类型语言,它的对象引用可以在运行时检查。
6. 并发方法不同。
在javascript中,弱类型是指数据类型可以被忽略,一个变量可以赋不同数据类型的值。javascript是一种弱类型语言,它允许变量类型的隐式转换,允许强制类型转换等,如字符串和数值可以自动转化;而强类型语言一般不允许这么做。
将父类的实例作为子类的原型
function Cat(){ } Cat.prototype = new Animal(); Cat.prototype.name = 'cat'; // Test Code var cat = new Cat(); console.log(cat.name); console.log(cat.eat('fish')); console.log(cat.sleep()); console.log(cat instanceof Animal); //true console.log(cat instanceof Cat); //true
使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没用到原型)
function Cat(name){ Animal.call(this); this.name = name || 'Tom'; } // Test Code var cat = new Cat(); console.log(cat.name); console.log(cat.sleep()); console.log(cat instanceof Animal); // false console.log(cat instanceof Cat); // true
闭包是有权限访问其他函数作用域的局部变量的一个函数
闭包的作用:
1. 一个是可以读取函数内部的变量;
2. 变量私有化,避免全局污染
3. 延续局部变量的寿命 (也可能变成缺点)
闭包的缺点
1. 导致变量不会被垃圾回收机制回收,造成内存消耗,解决需手动删除
2. 不恰当的使用闭包可能会造成内存泄漏的问题
事件循环(eventLoop)是单线程的JavaScript在处理异步事件时进行的一种循环过程,具体来讲,对于异步事件它会先加入到事件队列中挂起,等主线程空闲时会去执行事件队列中的事件。
https://juejin.cn/post/7002037475874963493
1. 宏任务:当前调用栈中执行的代码成为宏任务。(主代码快,定时器等等)
2. 微任务: 当前(此次事件循环中)宏任务执行完,在下一个宏任务开始之前需要执行的任务,可以理解为回调事件。(promise.then,proness.nextTick等等)。
3. 宏任务中的事件放在callback queue中,由事件触发线程维护;微任务的事件放在微任务队列中,由js引擎线程维护。
Node.js 是一个开源与跨平台的 JavaScript 运行时环境
在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能
可以理解为 Node.js 就是一个服务器端的、非阻塞式I/O的、事件驱动的JavaScript运行环境
1. 解构赋值
2. 模板字符串
3. 默认参数
4. 箭头函数
5. Promises 解决异步问题
三者都是用来声明变量的,let,var常用来声明变量,const声明常量
1. var声明的变量会挂载在window上,而let和const声明的变量不会
2. var声明变量存在变量提升,let和const不存在变量提升
3. let和const声明形成块作用域
4. 同一作用域下let和const不能声明同名变量,而var可以
JavaScript是单线程语言,所以执行肯定是按顺序执行。但是并不是逐行的分析和执行,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。
js在编译阶段的时候,会搜集所有的变量声明并且提前声明变量,而其他的语句都不会改变他们的顺序,因此,在编译阶段的时候,第一步就已经执行了,而第二部则是在执行阶段执行到该语句的时候才执行。
ES6 规定,如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”
1. 语法更加简洁、清晰
2. 箭头函数没有 prototype (原型),所以箭头函数本身没有this
3. call | apply | bind 无法改变箭头函数中this的指向
4. 箭头函数不能作为构造函数使用
call | apply | bind方法可以用来动态修改函数执行时this的指向,但由于箭头函数的this定义时就已经确定且永远不会改变。所以使用这些方法永远也改变不了箭头函数this的指向。
优点:
1、vue两大特点:响应式编程、组件化。
2、vue的优势:轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快。
3、vue是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和dom,这样大大加快了访问速度和提升用户体验。而且他的第三方ui库很多节省开发时间。
缺点:
1.不利于SEO优化.
2.首屏加载速度慢.加载时,将所有的css,js文件进行加载.
3.不支持IE678