前言
接触前端快三年了,许多的前端概念都只是模模糊糊的,说不清楚。一直以来,都想要整理,梳理一下这些概念,可是工作有点忙,加上自己又不是那么自律的人,所以一直拖着。难得今天有空,本着昨日事,今日也可毕的精神,写上那么点,以后再慢慢补全。
基础概念
- Javascript的数据类型
javascript的数据类型有String(字符串)、 Undefined 、 Null 、Boolean(布尔值) 、Number(数字) 、 Object(对象),ES6新增了Symbol(表示独一无二)。
- 内置对象
除了原始数据类型外,javascript还内置了许多的对象,常用的主要有: Array(数组)、Date(时间)、Error(错误)、Function(函数)、NaN(not a number)、Math、RegExp(正则表达式),ES6的Promise、Proxy。
- 变量
1.变量声明:
var[let,[const]] varname [= value];
2.局部变量和全局变量
局部变量声明在函数内部,全局变量声明在函数外,可以有:
var varname =value;
varname =value;
window.varname = value;
局部变量的作用域在当前执行上下文当中,全局变量的作用域是全局的:
var x = 0;
function fun(){
var x = 10;
y = 1;
}
fun();
console.log(x)//0
console.log(y)//1
用var声明的变量是不可配置属性,而省略var声明的变量是可配置属性的(例如删除)
var a = 0;
b = 1;
...
delete this.a
3.变量声明提升
由于变量的声明总是在任意代码执行前处理,因此在代码中的任意位置声明变量总是等效于在代码开头声明。这意味着所有变量的声明都会移动到函数或者全局代码的开头位置,变量可以在声明之前使用。
md = 'markdown';
var md;
等同
var md;
md = 'markdown';
建议在作用域的最开始(函数或者全局代码的开头)声明变量,这样可以使变量的作用域变得清晰。
4.多个变量的初始化
var a = 'A';
var b = a;
等效于:
var a,b = a = 'A';
5.隐式全局变量和外部函数作用域
var a = b,b = 4;
a+b;//NaN
其实a为局部变量,b为全局变量,等同于:
var a;
a=b;
b=4;
- Object对象
1.语法:
使用构造函数:
new Object([value]);
使用字面量:key-value键值对
{[key1:value1,[key2:value2,...[keyn:valuen]]]}
2.属性
Object.length
值为1
Object.prototype
为Object添加属性和方法
3.方法
Object.assign(target, …sources)
类似jQuery的extend方法:
var o = {a:1},b = {c:2},j={a:'2'};
var obj = Object.assign(o,b,j);
console.log(obj);//{a: "2", c: 2}
Object.create(proto,[])
var ss = new Object({a:3})
var o = Object.create(ss, {
// foo会成为所创建对象的数据属性
foo: {
writable:true,
configurable:true,
value: "hello"
},
// bar会成为所创建对象的访问器属性
bar: {
configurable: false,
get: function() { return 10 },
set: function(value) {
console.log("Setting `o.bar` to", value);
}
}
});
o.a//3
o.foo//hello
o.bar//10
4.Object.keys(obj)
var ary = [1,2,3,5];
Object.keys(ary);//["0", "1", "2", "3"]
var obj = {a:1,b:2,c:3};
Object.keys(obj)//['a','b','c']
5.