前端的基础知识
Javascript的基础知识
1.变量
说明:
1.第一个字符必须是字母、下划线(_)或美元符号($)
2.余下的字符可以是下划线、美元符号或任何字母或数字字符
3.ECMAScript另一个有趣的方面(也是与大多数程序设计语言的主要区别),是在使用变量之前不必声明
var 作用域,只有函数级作用域和全局作用域:
函数级作用域:在函数内用var定义一个变量,则该变量为定义该变量的作用域中的局部变量,在函数退出以后销毁;
全局作用域: 省略 var ,则为全局变量,在函数外的任何地方都可被访问到
(不推荐,难维护,且在严格模式下会抛出错误);
这也是诟病已久的变量污染,在严格模式下回出错;
let const 的作用
console.log(foo);
var foo = 2;
console.log(bar);
let bar = 2;
上面代码中,变量foo用var命令声明,会发生变量提升,即脚本开始运行时,变量foo已经存在了
,但是没有值,所以会输出undefined。变量bar用let命令声明,不会发生变量提升。
这表示在声明它之前,变量bar是不存在的,这时如果用到它,就会抛出一个错误。
var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。
这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。
为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。
2.数据类型
五种类型可以包含值的数据类型
字符串类型(string)
布尔类型(boolean)
数字类型(number)
对象类型(object)
函数类型(function)
三种对象类型
数组类型(array)
日期(date)
对象(Object)
两种空类型
null
undefined
注意:
NaN 的数据类型是数值;数组的数据类型是对象;日期的数据类型是对象
null 的数据类型是对象;未定义变量的数据类型是 undefined;尚未赋值的变量的数据类型也是 undefined。
还有一种说法就是:
众所周知,js中包含两种数据类型的值:基本数据类型和引用数据类型。
基本数据类型:null,undefined,number,string,boolean;引用数据类型:object。
变量赋值
1.基本数据类型值在内存中占据固定大小的空间,因此被保存在栈内存中;
从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本;
let a = 123
let b = a
b = 333
console.log(a, b)// => a = 123
a 和 b 的值存在于内存中的两个地址,互不影响。
2.引用类型数据赋值: 从一个引用类型变量向另一个变量赋值时,
同上,但引用类型的值,实际上是一个指针,与初始变量指向同一个堆内存的对象。因此,这两个变量会互相影响。
let a = {name: "linguomao"};
let b = a;
b.name = "new";
b.city="cc";
// => {name: "new", city: "cc"} {name: "new", city: "cc"} a 和 b 的值存在于内存中的两个地址,
但值是同一个指针,指向同一个内存中的对象,属性的改变会相互影响。
2.函数 & 原型 & 继承