CommonJS规范 -- JavaScript 标准参考教程(alpha)
Vue.js是用于构建用户界面的渐进式JavaScript框架,“自底向上,逐层设计、增量开发”
渐进式:一开始不需要设计人员完全掌握其框架的全部功能特性,可以放到后续步骤中逐步的增加方式来完成。
“自底向上,增量开发”:先设计好基础骨架,在逐步向上扩充,完善功能和效果。
视图层:MVVM模型(Model-View-View-Model)
双向数据绑定:View(视图)和Model(模型)的数据相互同步,Vue.js会通过DOM Listeners来监听并改变Model(模型)中的数据。当Model(模型)中的数据改变时,会通过Data Bingings来监听并改变View(视图)中的数据展现。
JavaScript基础
声明变量:
var关键字和let关键字
var关键字:声明全局变量
let关键字:只在代码块中起作用
有哪些块级作用域?
{}, for(){}, while(){}, do{}while(), if(){}, switch(){}。
变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i。也就是说,所有数组a的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是 5。
变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是3、1、2。而且JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量i时,就在上一轮循环的基础上进行计算。
声明常量
const关键字
const 声明的是常量,同样是用于存储信息的"容器",一旦声明,值将是不可变的,const 必须先声明后使用,const 不可重复声明
函数声明
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。JavaScript 使用关键字 function 定义函数,也可以通过声明定义,也可以是一个表达式。
function functionName(parameters){
执行代码
}
函数表达式
JavaScript 函数可以通过一个表达式定义,函数表达式可以存储在变量中:
let x = function (a, b) { return a * b };
document.getElementById("demo").innerHTML = x(4,3);
结果:12 (变量作为一个函数使用,且为匿名函数)
自调用函数
函数表达式可以 "自调用",函数表达式后面紧跟 () ,则会自动调用,不能自调用声明的函数,通过添加括号,来说明它是一个函数表达式:
(function () {
let x = "Hello!!"; // 我将调用自己
}()();
( function(){ } )();
(function(){}())
箭头函数(ES6)
例:const x = (x, y) => x * y;
当只有一个参数时,圆括号是可选的:
(单一参数) => { 函数声明 }
单一参数 => { 函数声明 }
没有参数的函数应该写成一对圆括号:
( ) => { 函数声明 }
const x = (x, y) => { return x * y };
document.getElementById("demo").innerHTML = x(5, 5);
使用 const 比使用 var 更安全,因为函数表达式始终是一个常量。如果函数部分只是一个语句,则可以省略 return 关键字和大括号 {}
数组的声明
1: 常规方式:
let myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
2: 简洁方式:
let myCars=new Array("Saab","Volvo","BMW");
3: 字面:
let myCars=["Saab","Volvo","BMW"];
所有的JavaScript变量都是对象,数组元素是对象,函数是对象,因此,你可以在数组中有不同的变量类型,你可以在一个数组中包含对象元素、函数、数组:
myArray[0]=Date.now;
myArray[1]=myFunction;
myArray[2]=myCars;
遍历数组:
for循环
const arr = ['a', 'b', 'c'];
for(let i=0;i<arr.length;i++){
arr[i]//当前正在遍历的元素
}
for in循环
for(let key in arr){
key//只是元素的下标名
arr[key]//当前元素值
}
for of循环
for (let value of arr) {
console.log(value); // a b c
}
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。注意: forEach() 对于空数组是不会执行回调函数的。JavaScript forEach() 方法 | 菜鸟教程
const arr = ['a', 'b', 'c'];
arr.forEach((value, key) => {
console.log(key, value); // 0 a 1 b 2 c
})
对象
JavaScript 对象是拥有属性和方法的数据,JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等等。此外,JavaScript 允许自定义对象,对象也是一个变量,但对象可以包含多个值(多个变量)。
let person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
使用:name = person.fullName()访问对象的方法,若name = person.fullName则返回定义函数的字符串
使用:person.lastName或person["lastName"] 访问对象的属性
变量的解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量 进行赋值,这被称为解构(Destructuring)。
let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3
let [ , , third] = ["foo", "bar", "baz"]; third // "baz"
let [x, , y] = [1, 2, 3]; x // 1 y // 3
let [head, ...tail] = [1, 2, 3, 4]; head // 1 tail // [2, 3, 4]