Bad Introduction to Javascript
It’s not that bad now. I have a feeling about this
他和 Java 没有关系,之所以取这个名字是当初为了蹭 Java 热度
- 只用了10天开发
- 直译语言,其中一条运行不了之后的不会运行。
服务器端:Node.js
I. 引用JS
a. script
内插入
1 | <body> |
- 如果只是从可运行的角度考虑,那么在HTML文件(不是标签)内任意放置
script
它都能被识别与使用。 - 但浏览器解析是按顺序的
- 一般而言,放在
head | body
部分 - 如果是页面初始化需要用到的js必须放在
head
- 如果使用了getElementById(Class)或者类似需要已存在元素的查改,注意Js的插入位置。
- 一般而言,放在
b. script
引用外部文件
1 | <script src="./xxx.js"> |
- 在引用外部文件以后,
script
标签内写的其他内容不会被执行
c. 事件属性
1 | <span onclick="alert(??)"> |
比较常用的是以上几种。
II. Strict Mode
使用以下语句进入严格模式
1 | ; |
a. 两种调用方式
1. 对整个脚本文件
置于第一行,否则大部分情况下以正常模式运行
1 | <script> |
上面的代码表示,一个页面中有两段Js。前一个是严格模式,后一个不是。
2. 对单个函数
将”use strict”放在函数体的第一行,则整个函数以”严格模式”运行。
b. 具体差别
一般体现在语法与行为上。
- 严格模式禁止在不声明的情况下直接使用变量
- 禁止this指向全局对象
- 禁止函数内部遍历调用栈
- 等
总之一般在写比较复杂的js时会选择性使用
III. let|const|var
1 | var a=6; |
const 常量应该都懂
实际使用中最好使用let,因为用 var 声明的变量如果在之后的代码中再次声明(假设你忘了自己已经使用过了该变量名),并不会报错,会给潜在的debug带来麻烦。
如果使用let,在运行到二次声明时会报错。
IV. 数据类型
基本类型
- string | number | boolean | null | undefined | symbol
- 数字支持科学计数表示 如 123e5 (12300000)
引用类型
- Object | Array | Function
类型是动态的,所以相同的变量可以赋值为不同的类型
- null 与undefined 值相等
关于==与===
在使用==比较两个变量时,会将其转换为同一种数据类型再进行比较
相对应的===只要类型不同就会返回false
基本的语法都能找到,和现存的其他语言都很相似
V. 函数
一般函数的结构为
1 | function name(arg1,arg2..){ |
参数可为空,如果需要有返回值使用 return 语句即可
a. 箭头函数
1 | x=>x*x |
箭头函数相当于匿名函数并简化了定义
多参数或执行语句需要用{}括起来
1 | (x,y)=>{ |
VI. RESTful & spread (杂项)
REST全称是Representational State Transfer
如果简单理解,是对增删改查(GET PUT POST DELETE)的标准和约束
- 要让一个资源可以被识别,需要有个唯一标识,在Web中这个唯一标识就是URI(Uniform Resource Identifier)
- RESTful架构应该遵循统一接口原则,不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。
典型用法见RUNOOB
Spread
1 | ...a |
这里的..是ES6标准中的语法
1 | var mid = [3, 4]; |
只是扩展内容的举例
VII. DOM
DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口。
HTML DOM 定义了访问和操作 HTML 文档的标准方法。DOM 以树结构表达 HTML 文档。
- 整个文档是一个节点
- 每个HTML元素是一个节点
- HTML元素内的文本是文本节点
- 每个HTML属性是属性节点
- 注释是注释节点
a . DOM 对象 方法 属性
1. 常用方法
- getElementById(id)
- getElementByClassName(class)
- appendChild(node)
- removeChild(node)
2. 常用属性
- innerHTML//节点的文本值
- parentNode//父节点
- ChildNode//子节点
- attributes//属性节点
有需要用到的可以再去查
3. 示例
1 | <body> |
那么简单的结合事件触发onXXX, addEventListener
等即可做到一些常见的功能。
AddEventListener
相比 onXXX
,可以对一个事件绑定多个函数