js 零基础起步
js 基础知识汇总
数据类型
基本类型: Undefined, Null, Boolean, Number, String , Symbol
基本类型值保存在栈空间,我们通过按值来访问的。
引用类型: Array Object Date Function
引用类型的值是对象,栈内存中存放地址指向堆内存中的对象。是按引用访问的。栈内存中存放的只是该对象的访问地址,在堆内存中为这个值分配空间。
检测数据类型常用 typeof 或者 instanceof
undefined 与 null 的区别
compare
JavaScript的变量在比较的时候会隐式类型转换。这就是为什么一些诸如:false == 0 或 “” == 0 返回的结果是true。
为避免引起混乱的隐含类型转换,在你比较值和表达式类型的时候始终使用===和!==操作符。
关于 this
原则,那就是this指的是调用函数的那个对象。
javascript 的this主要是看如何调用这个函数,而不是这个函数所在的作用域。obj.fn() fn中的 this 就是 obj。 fn() this是undifine, 而在js进入函数之前,会有 if(!this) { this = window} 这样的操作。
关于 DOM
DOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API。Javascript和DOM一般经常作为一个整体,因为Javascript通常都是用来进行DOM操作和交互的。
关于DOM,有些知识需要注意: 1. window对象作为全局对象,也就是说你可以通过window来访问全局对象。
属性在对象下面以变量的形式存放,在页面上创建的所有全局对象都会变成window对象的属性。
方法在对象下面以函数的形式存放,因为左右的函数都存放在window对象下面,所以他们也可以称为方法。
DOM为web文档创建带有层级的结果,这些层级是通过node节点组成,这里有几种DOM node类型,最重要的是Element, Text, Document。
Element节点在页面里展示的是一个元素,所以如果你有段落元素(),你可以通过这个DOM节点来访问。
Text节点在页面里展示的所有文本相关的元素,所以如果你的段落有文本在里面的话,你可以直接通过DOM的Text节点来访问这个文本
Document节点代表是整个文档,它是DOM的根节点。
每个引擎对DOM标准的实现有一些轻微的不同。
例如,Firefox浏览器使用的Gecko引擎有着很好的实现(尽管没有完全遵守W3C规范),但IE浏览器使用的Trident引擎的实现却不完整而且还有bug,给开发人言带来了很多问题。
关于 EVENT
我们需要了解: 1. JS是单线程语言 2. JS的Event Loop是JS的执行机制。深入了解JS的执行,就等于深入了解JS里的event loop
Effective
hoisting(悬置/置顶解析/预解析)
JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析)
eval()
如果你现在的代码中使用了eval(),记住该咒语“eval()是魔鬼”。此方法接受任意的字符串,并当作JavaScript代码来处理。当有 问题的代码是事先知道的(不是运行时确定的),没有理由使用eval()。如果代码是在运行时动态生成,有一个更好的方式不使用eval而达到同样的目 标。例如,用方括号表示法来访问动态属性会更好更简单:
(隐式)全局变量
隐式全局变量和明确定义的全局变量间有些小的差异,就是通过delete操作符让变量未定义的能力。
通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。
无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的
Last updated