ES6
语法糖
箭头函数
[1,2,3,4].map(item => item + 1)
axios({
url: 'https://www.zhihu.com/api/v4/me?include=account_status%2Cis_bind_phone%2Cis_force_renamed%2Cemail%2Crenamed_fullname',
method: 'GET'
}).then(res => res.data)
export default {
name: 'app',
data() {
return {
initContent: 'width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no',
}
},
metaInfo() {
return {
title: 'VUE',
meta: [
{ name: 'viewport', content: this.initContent },
],
}
},
computed: {
isMac() {
return navigator.userAgent.indexOf('Mac') !== -1
},
},
components: {
},
watch: {
$route() {
document.getElementById('vue_jia').remove()
this.init()
window.scrollTo(0, 0)
},
},
created() {
if (navigator.userAgent.indexOf('iPad') !== -1) {
this.initContent = 'width=device-width, initial-scale=0.75,user-scalable=yes, minimum-scale=0.75, maximum-scale=3.0'
} else {
this.initContent = 'width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no'
}
},
mounted() {
this.init()
},
methods: {
init() {
const url = 'http://v3.jiathis.com/code/jia.js'
const script = document.createElement('script')
script.setAttribute('src', url)
script.setAttribute('id', 'vue_jia')
document.getElementsByTagName('head')[0].appendChild(script)
},
},
}
模块化
js加入原生模块化之前使用的:
解决方案:commonjs amd cmd umd等
模块加载库:requireJs seaJs fis browserify webpack
import React from 'react'
组件化
angular: directory
directive("picker", require("./picker"))
picker
--| index.js
--| index.html
....
<picker ng-model="..."><picker/>
....
react vue: component
Header.vue
Header.js[x]
import Header from '../...'
...
<Header></Header>
...
常量(const) 块级作用域(let,const) ,不存在变量提升,必须声明后使用
const
const 为constant的缩写,用于定义常量
const优势: 可以为程序工程化提供内存安全,因为const定义常量的原理是阻隔变量名所对应的内存地址被改变,并非值不可变
ECMAScript在对变量的引用进行读取时,会从该变量当前所对应的内存地址所指向的内存空间中读取内容。而当用户改变变量的值时,
引擎会重新从内存中分配一个新的内存空间以存储新的值,并将新的内存地址与变量绑定。const的原理便是当变量名尝试变更内存地址时抛出异常。
const API = 'api' //常量
API = 'VAPI' //Uncaught SyntaxError: Identifier 'API' has already been declared
const obj = {
a: 1
}
obj.a = 3
console.log(obj.a) // 3
obj.b = 1
console.log(obj.b) // 1
let, const 块级作用域
var count = 1 // 全局作用域
let num = '02166668888'
const query = () => {
var local = 1 // 函数作用域
}
query()
console.log(count) // 1
console.log(num) // 02166668888
console.log(local) // Uncaught ReferenceError: local is not defined
for(var i = 0; i < 10; i++){
}
console.log(i) // 10
for(let j = 0; j < 10; j++){
}
console.log(j) // Uncaught ReferenceError: j is not defined
const query = () => {
var local = 1 // 函数作用域
console.log(local)
}
query() // 1
for(var i = 0; i < 10; i++){
console.log(i) // 0 1 2 3 4 5 6 7 8 9
}
for(let j = 0; j < 10; j++){
console.log(j) // 0 1 2 3 4 5 6 7 8 9
}