JavaScipt
是一个动态类型、弱类型、基于原型
script标签api
async
- 可选, 表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或 等待加载其他脚本。只对外部脚本文件有效。
charset
- utf-8等, 一般不用
defer
- 表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有 效。IE7 及更早版本对嵌入脚本也支持这个属性。
- 2个脚本都设置,并不能保证他们的先后顺序
language
废弃
src
可选。表示包含要执行代码的外部文件。
type
可选。
- 一般使用 text/javascript
- 不推荐 text/ecmascript
放置位置
- 标签一般都要放在body后面,否则会导致页面空白。
- html会从上往下执行,放在head头里面会加载完才加载html,会导致页面空白。放在script就不会导致页面空白太长时间了。
数据类型
简单数据类型
- Undefined、Null、Boolean、Number、String
复杂数据类型
- Object
待定不确定
- Map Symbol Array function
数据类型方法
number
- Number(x)
- isNaN(x)
- parseInt(x, x) 第二个参数以什么来解析它,二进制,还是十进制等
- 更多暂不列举
string
- String(x)
Object
- Object.constructor
- Object.hasOwnProperty("name") 用于检查给定的属性在当前对象实例中(而不是在实例 的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定
- isPrototypeOf(object)
- isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型(第 5 章将讨论原 型)。
- propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用 for-in 语句 (本章后面将会讨论)来枚举。与 hasOwnProperty()方法一样,作为参数的属性名必须以字符 串形式指定。
- toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
- toString()
- valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值 相同。
url对象
- location.search 返回?和后面的参数
- location.hostname 返回域名
- location.href 返回链接
循环方法
- for
- while 直接执行while 语句内代码
- do while 执行do语句后才执行while内代码
- with 不推荐
- switch switch (expression) { case value:statement; break; default: statement } 一定要加 break; switch 不会发生类型转换
变量、作用域和内存问题
基本类型
- Undefined、Null、Boolean、Number 和 String。这 5 种基本数据类型是按值访问 的,因为可以操作保存在变量中的实际的值。
- 引用类型的值是保存在内存中的对象。与其他语言不同,JavaScript 不允许直接访问内存中的位置, 也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。 为此,引用类型的值是按引用访问的。
- 堆(值)、栈(引用,改变其他引用的值也会改变)
检测类型
typeof
- typeof number 返回 number
- typeof string 返回 string
- typeof boolean 返回 boolean
- typeof undefind 返回 undefind
- typeof null 返回 object
- typeof object 返回 object
- typeof Array 返回 object
- typeof Symbol() 返回 symbol
- typeof function 返回 function
- 基本类型适用
instanceof
- variable instanceof constructor 返回true || false
- 不能用于基本类型
- ps: null undefind 没法用,因为他们没有构造函数 ##执行环境、作用域
环境
- 全局环境和局部环境
- 局部环境可以访问全局环境
作用域
- let const 有独立的作用域
- window是全局作用域 function函数等局部作用域
- try catch可以访问到彼此的。
- for 循环 if 中 var声明的变量可以,let声明的不行