javascript 基础

164 阅读3分钟

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声明的不行