JavaScript 2
YeeKal
•
•
"#"
this
在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变
- 在方法中,this 表示该方法所属的对象
- 单独使用 this,则它指向全局(Global)对象。
let & const
JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:
var x; // x 为 undefined
var x = 5; // 现在 x 为数字
var x = "John"; // 现在 x 为字符串
- var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
- let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
- const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改
var x = 10;
// 这里输出 x 为 10
{
let x = 2;
// 这里输出 x 为 2
}
// 这里输出 x 为 10
var x = 10;
// 这里输出 x 为 10
{
const x = 2;
// 这里输出 x 为 2
}
// 这里输出 x 为 10
const 实际定义了一个常量引用,因此使用 const 定义的对象或者数组,其实是可变的
Function
// 函数声明
function functionName(parameters) {
执行的代码
}
// 函数表达式
var x = function (a, b) {return a * b};
箭头函数(arrow function)
(参数1, 参数2, …, 参数N) => { 函数声明 }
(参数1, 参数2, …, 参数N) => 表达式(单一)
// 相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }
(单一参数) => {函数声明}
单一参数 => {函数声明}
() => {函数声明} // 无参数
// ES6 使用 const 比使用 var 更安全,因为函数表达式始终是一个常量
const x = (x, y) => x * y;
Closure 闭包
在函数内部返回定义的子函数,从而通过子函数访问函数内部变量。
好处:
- 可以读取函数内部的变量
- 让这些变量的值始终保持在内存中
function makeFunc() {
var name = "Mozilla";
function displayName() {
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
myFunc();
Object
JavaScript 对象是键值对的容器, 类似python中的字典
Json
JSON 格式在语法上与创建 JavaScript 对象代码是相同的.
{"sites":[
{"name":"Runoob", "url":"www.runoob.com"},
{"name":"Google", "url":"www.google.com"},
{"name":"Taobao", "url":"www.taobao.com"}
]}
var obj = JSON.parse(text);
// convert java var to json string
var str = {"name":"菜鸟教程", "site":"http://www.runoob.com"}
str_pretty1 = JSON.stringify(str)