Showing
1 changed file
with
154 additions
and
0 deletions
技术分享/JavaScript 最佳实践(上).md
0 → 100644
1 | +# **JavaScript 最佳实践(上)** | ||
2 | + | ||
3 | +标签(空格分隔): JavaScript 学习笔记 | ||
4 | + | ||
5 | +--- | ||
6 | +[TOC] | ||
7 | + | ||
8 | +--- | ||
9 | +## 一、JavaScript初探 | ||
10 | +###1.名词概念 | ||
11 | + * DOM: Document Object Model (文档对象模型) | ||
12 | + * BOM: Browser Object Model (浏览器对象模型) | ||
13 | + | ||
14 | +###2.知识点解析 | ||
15 | +#### **JavaScript内置的对象** | ||
16 | +* date(显式使用) | ||
17 | +* string(隐式使用) | ||
18 | +#### **事件句柄: onload属性** | ||
19 | +* 可以在元素的标记上增加<bodyonload="functionName()"></body> | ||
20 | +* 也可以自JavaScript中使用document.onload = functionName() | ||
21 | +#### **关键字var和作用域** | ||
22 | +* 使用var声明的变量,每个变量的作用域都是局部的 | ||
23 | +* 不适用var声明的变量,变量的作用域是全局的,可以被web页面任何地方的所有JavaScript代码访问 | ||
24 | +* 考虑作用域时的规则 | ||
25 | + * 如果函数中的变量在声明时使用了关键字var,它就只能在此函数的局部使用; | ||
26 | + * 如果函数中的变量在声明时没有使用关键字var,而又存在一个同名的全局变量,它就被当作那个全局变量; | ||
27 | + * 如果变量在局部中声明并使用了关键字var,但它又没有被初始化(比如赋值),它可以访问但没有被定义; | ||
28 | + * 如果变量在局部中声明,但没有使用关键字var,或显式地声明为全局变量,但它又没有被初始化,它在全局中可以访问但没有被定义。 | ||
29 | +#### **属性操作符(property operator),又叫点操作符** | ||
30 | +事件元素、事件句柄以及对象方法都被认为是JavaScript中的对象属性,他们都要通过属性操作符来访问。 | ||
31 | +#### **语句的终止符——;** | ||
32 | +当在一行中输入一个完整的语句而没有带分号结束时,换行符终止了这一语句。所以所有的语句终止都使用分号能很好地避免不必要的错误 | ||
33 | +#### **JavaScript沙箱** | ||
34 | +JavaScript构建为只在沙箱中运行。沙箱是一个受保护的环境,在这个环境中,脚本不能访问浏览器所在的计算机资源。另外,浏览器所实现的安全条件高出并超出了JavaScript语言所建立的最低条件。这些都定义在一个与浏览器相关的安全策略中,它决定了脚本能做什么不能做什么。 | ||
35 | +####**可访问性** | ||
36 | +无论创建一个什么样的JavaScript功能,绝不能离间网站和其访问者。应该保证不能或不愿启动JavaScript的人,如果他们使用不启动脚本的浏览器也能访问网站的基本资源。 | ||
37 | +####**noscript标记** | ||
38 | +浏览器或应用不能处理脚本时(因为某些原因而将JavaScript禁用了),那么就会处理noscript的内容,否则,noscript就会被忽略掉。 | ||
39 | +#### **UDF (User Defined Function):用户自定义函数** | ||
40 | +```JavaScript | ||
41 | + function functionName (params) { | ||
42 | + //可以返回值,也可以不返回 | ||
43 | + } | ||
44 | +``` | ||
45 | + | ||
46 | +###Tips | ||
47 | +- [ ] 将JavaScript程序代码块放入到外部JavaScript文件中 | ||
48 | +- [ ] 在每个JavaScript语句块、函数或对象定义的开始,都使用至少一行注释。另外,在所有JavaScript库文件的开始都提供一个更详细的注释块, 其中包括作者、日期、依存关系以及脚本的详细目的等信息。 | ||
49 | + | ||
50 | +--- | ||
51 | + | ||
52 | +## 二、JavaScript数据类型与变量 | ||
53 | +### 1.变量的标识 | ||
54 | +* 每个变量的标识符是唯一的,由字母、数字、下划线跟$符组成,必须以一个字母、$符或下划线开始 | ||
55 | +* 可以使用Unicode的字母,也可以使用转义序列 | ||
56 | +* 区分大小写 | ||
57 | +* 不能是JavaScript关键字 | ||
58 | +* 命名规则 | ||
59 | + * 使用有含义的词,可以使用暗示数据类型的内容作为名字的一部分(匈牙利命名法) | ||
60 | + * 对于集合,名称应该使用复数形式 | ||
61 | + * 对象名首字母大写,函数和变量是以小写字母开始;单词首字母大写(驼峰命名法),单词之间使用横线或下划线也能达到这种效果 | ||
62 | + * 使用下划线(_)来标明私有变量(Prototype效果) | ||
63 | + | ||
64 | +### 2.作用域 | ||
65 | +* **局部变量** 局部作用域的变量在一个函数内部定义、初始化和使用;当函数终止时,变量也就不存在了。 | ||
66 | +* **全局变量** 在Web网页所包含的任何JavaScript中的任何地方都可以访问全局变量,无论JS是直接嵌入到网页中的还是从JavaScript库中引入的 | ||
67 | + | ||
68 | +### 3.简单类型 | ||
69 | +**数据类型** | ||
70 | + | ||
71 | +* 字符串型 | ||
72 | +* 数字型 | ||
73 | +* 布尔型 | ||
74 | + | ||
75 | +**内置对象** | ||
76 | + | ||
77 | +* 数字 | ||
78 | +* 字符串 | ||
79 | +* 布尔型 | ||
80 | + | ||
81 | +**字符串型** | ||
82 | + | ||
83 | +* 字符串直接量是一个使用单引号或双引号分隔的多字符的序列 | ||
84 | +* 可以包含转义序列,比如用\n代表换行符 | ||
85 | +* 函数escape,可以对整个字符串进行编码,把ASCII码转换为URL编码 | ||
86 | +* encodeURI和decodeURI 能处理的字符集不仅仅限于ASCII | ||
87 | +* 可以使用string函数显式地把一个变量转换成字符串 | ||
88 | + | ||
89 | +**布尔型** | ||
90 | +有两个值:true和false 不必用引号引起来 | ||
91 | + | ||
92 | +**数值型** | ||
93 | + | ||
94 | +* Infinity和-Infinity来表示正负无穷大,当发生了数字溢出的时候,会返回一个正无穷大 | ||
95 | +* 进制表示 十六进制的数字以0x开头,八进制的数字以0开头 | ||
96 | +* 把字符串或布尔值转换为数字的转换函数 | ||
97 | + * parseInt | ||
98 | + parseInt(param1, param2) 参数2用来指定基数 | ||
99 | + * parseFloat | ||
100 | +* 函数IsFinite测试一个变量的值是否是无穷大 | ||
101 | +如果是无穷大(infinity)或NaN,函数返回false,否则返回true | ||
102 | + | ||
103 | +**null和undefined** | ||
104 | +null(空):没有被定义,也没有被赋值过 | ||
105 | +undefined(未定义):声明过,但没有初始化过这个变量 | ||
106 | +函数isNaN专门用来测试一个变量是否是NaN | ||
107 | + | ||
108 | +### 4.常量 | ||
109 | +关键字const被用来创建一个JavaScript常量: | ||
110 | +`const CURRENT_MONTH = 3.5;` | ||
111 | +不能在常量定义之后对它进行赋值或重赋值 | ||
112 | + | ||
113 | + | ||
114 | + | ||
115 | +### Tips | ||
116 | +在定义任何变量时,无论是全局变量还是局部变量,都要使用关键字var | ||
117 | + | ||
118 | +---- | ||
119 | + | ||
120 | +## 三、运算符和语句 | ||
121 | +###1.JavaScript语句的格式 | ||
122 | +JavaScript语句通常以分号结尾,在某些情况下换行符也能结尾。**显式地以分号结束一个JavaScript语句,无论这是否必要 | ||
123 | + | ||
124 | +###2.简单语句 | ||
125 | + | ||
126 | +---- | ||
127 | +## 四、JavaScript对象 | ||
128 | +###1.Number对象 | ||
129 | +四个常量属性 | ||
130 | + | ||
131 | +- Number.MAX_VALUE | ||
132 | +- Number.MIN_VALUE | ||
133 | +- Number.NEGATIVE_INFINITY | ||
134 | +- Number.NEGATIVE_INFINITY | ||
135 | + | ||
136 | +几个方法 | ||
137 | + | ||
138 | +- NumberObject.toExponential(num) | ||
139 | +把对象的值转换成指数计数法。 | ||
140 | +**num** 必需。规定指数计数法中的小数位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将使用尽可能多的数字。 | ||
141 | +- NumberObject.toPrecision(num) | ||
142 | +在对象的值超出指定位数时将其转换为指数计数法。 | ||
143 | +**num** 必需。规定必须被转换为指数计数法的最小位数。该参数是 1 ~ 21 之间(且包括 1 和 21)的值。有效实现允许有选择地支持更大或更小的 num。如果省略了该参数,则调用方法toString(),而不是把数字转换成十进制的值。 | ||
144 | +- NumberObject.toFixed(num) | ||
145 | +把 Number 四舍五入为指定小数位数的数字。 | ||
146 | +**num** 必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。 | ||
147 | + | ||
148 | + | ||
149 | + | ||
150 | + | ||
151 | + | ||
152 | + | ||
153 | + | ||
154 | + |
-
Please register or login to post a comment