记忆如沙指尖过,叹如果,何为如,何为果? 花季,风碾过,零落一地寂寞,谁明身该如何,土也湮没,雨坐,重刷遗地的香一抹。
认识javascript
JavaScript 是因特网上最流行的脚本语言。
JavaScript 是一种轻量级的编程语言。
JavaScript 被数百万计的网页用来改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。
JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
JavaScript 很容易学习。
JavaScript 很容易使用!你一定会喜欢它的
一、如何编写
1、JavaScript代码存在形式
<!-- 方式一 -->
<script type<span>"</span><span>text/javascript</span><span>"</span> src=<span>"</span><span>JS文件</span><span>"</span>></script>
<!-- 方式二 -->
<script type<span>"</span><span>text/javascript</span><span>"</span>><span>
Js代码内容
</span></script>
2、JavaScript代码存放位置
- HTML的head中
- HTML的body代码块底部(推荐)
由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。
二、变量
JavaScript中变量的声明是一个非常容易出错的点,局部变量必须一个 var 开头,如果未使用var,则默认表示声明的是全局变量。
<script type=<span>"</span><span>text/javascript</span><span>"</span>>
//<span> 全局变量
name </span>= <span>‘</span><span>seven</span><span>‘</span><span>;
function func(){
</span>//<span> 局部变量
var age </span>= 18<span>;
</span>//<span> 全局变量
gender </span>= <span>"</span><span>男</span><span>"</span><span>
}
</span></script>
JavaScript中代码注释:
- 单行 //
- 多行 /* */
注意:此注释仅在Script块中生效。
三、数据类型
JavaScript 中的数据类型分为原始类型和对象类型:
- 原始类型
- 数字
- 字符串
- 布尔值
- 对象类型
- 数组
- “字典”
- ...
特别的,数字、布尔值、null、undefined、字符串是不可变。
//<span> null、undefined null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。 undefined是一个特殊值,表示变量未定义。</span>
1、数字(Number)
JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。
转换:
- parseInt(..) 将某值转换成数字,不成功则NaN
- parseFloat(..) 将某值转换成浮点数,不成功则NaN
特殊值:
- NaN,非数字。可使用 isNaN(num) 来判断。
- Infinity,无穷大。可使用 isFinite(num) 来判断。
判断类型:
typeof
更多数值计算:
<span>常量
Math.E
常量e,自然对数的底数。
Math.LN10
10的自然对数。
Math.LN2
2的自然对数。
Math.LOG10E
以10为底的e的对数。
Math.LOG2E
以2为底的e的对数。
Math.PI
常量figs</span>/<span>U03C0.gif。
Math.SQRT1_2
2的平方根除以1。
Math.SQRT2
2的平方根。
静态函数
Math.abs( )
计算绝对值。
Math.acos( )
计算反余弦值。
Math.asin( )
计算反正弦值。
Math.atan( )
计算反正切值。
Math.atan2( )
计算从X轴到一个点的角度。
Math.ceil( )
对一个数上舍入。
Math.cos( )
计算余弦值。
Math.exp( )
计算e的指数。
Math.floor( )
对一个数下舍人。
Math.log( )
计算自然对数。
Math.max( )
返回两个数中较大的一个。
Math.min( )
返回两个数中较小的一个。
Math.pow( )
计算xy。
Math.random( )
计算一个随机数。
Math.round( )
舍入为最接近的整数。
Math.sin( )
计算正弦值。
Math.sqrt( )
计算平方根。
Math.tan( )
计算正切值。
Math</span>
2、字符串(String)
字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。
常见功能:
obj.length 长度
<span>定义和用法
length 属性可设置或返回数组中元素的数目。
语法
arrayObject.length
实例
</span><script type="text/javascript">
<span>var</span> arr = <span>new</span> Array(3<span>)
arr[</span>0] = "John"<span>
arr[</span>1] = "Andy"<span>
arr[</span>2] = "Wendy"<span>
document.write(</span>"Original length: " +<span> arr.length)
document.write(</span>"<br />"<span>)
arr.length</span>=5<span>
document.write(</span>"New length: " +<span> arr.length)
</span></script>
<span>输出:
Original length: </span>3<span>
New length: </span>5
obj.trim() 移除空白
obj.trimLeft()
obj.trimRight()
obj.charAt(n) 返回字符串中的第n个字符
<span>//</span>
<span>字符中的字符从左向右进行索引,由0开始,字符串中的空格也算在内</span>
<span>案例:
</span>
<span>var</span> string = "charAt find word position"<span>;
document.write(</span>"charAt find word position"+ "<br/>"<span>)
document.write(</span>"string.charAt(0) is:" + string.charAt(0) + "<br/>"<span>);
document.write(</span>"string.charAt(1) is:" + string.charAt(1) + "<br/>"<span>);
document.write(</span>"string.charAt(2) is:" + string.charAt(2) + "<br/>"<span>);
document.write(</span>"string.charAt(3) is: " + string.charAt(3) + "<br/>"<span>);
document.write(</span>"string.charAt(4) is: " + string.charAt(4) + "<br/>"<span>);
document.write(</span>"string.charAt(5) is: " + string.charAt(5) + "<br/>"<span>);
document.write(</span>"string.charAt(6) is: " + string.charAt(6) + "<br/>"<span>);
document.write(</span>"string.charAt(7) is: " + string.charAt(7) + "<br/>"<span>);
document.write(</span>"string.charAt(string.length-2) is: " + string.charAt(string.length-2) + "<br/>"<span>)
document.write(</span>"string.charAt(string.length-1) is: " + string.charAt(string.length-1) + "<br/>"<span>)
</span><span>//</span><span>输出结果</span>
string.charAt(0<span>) is:c
string.charAt(</span>1<span>) is:h
string.charAt(</span>2<span>) is:a
string.charAt(</span>3<span>) is: r
string.charAt(</span>4<span>) is: A
string.charAt(</span>5<span>) is: t
string.charAt(</span>6<span>) is:
string.charAt(</span>7<span>) is: f
string.charAt(string.length</span>-2<span>) is: o
string.charAt(string.length</span>-1) is: n
obj.concat(value, ...) 拼接
<span>定义和用法
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法
arrayObject.concat(arrayX,arrayX,......,arrayX)
实例
例子 </span>1<span>
在本例中,我们将把 concat() 中的参数连接到数组 a 中:
</span><script type="text/javascript">
<span>var</span> a = [1,2,3<span>];
document.write(a.concat(</span>4,5<span>));
</span></script>
<span>
输出:
</span>1,2,3,4,5<span>
例子 </span>2<span>
在本例中,我们创建了两个数组,然后使用 concat() 把它们连接起来:
</span><script type="text/javascript">
<span>var</span> arr = <span>new</span> Array(3<span>)
arr[</span>0] = "George"<span>
arr[</span>1] = "John"<span>
arr[</span>2] = "Thomas"
<span>var</span> arr2 = <span>new</span> Array(3<span>)
arr2[</span>0] = "James"<span>
arr2[</span>1] = "Adrew"<span>
arr2[</span>2] = "Martin"<span>
document.write(arr.concat(arr2))
</span></script>
<span>
输出:
George,John,Thomas,James,Adrew,Martin
例子 </span>3<span>
在本例中,我们创建了三个数组,然后使用 concat() 把它们连接起来:
</span><script type="text/javascript">
<span>var</span> arr = <span>new</span> Array(3<span>)
arr[</span>0] = "George"<span>
arr[</span>1] = "John"<span>
arr[</span>2] = "Thomas"
<span>var</span> arr2 = <span>new</span> Array(3<span>)
arr2[</span>0] = "James"<span>
arr2[</span>1] = "Adrew"<span>
arr2[</span>2] = "Martin"
<span>var</span> arr3 = <span>new</span> Array(2<span>)
arr3[</span>0] = "William"<span>
arr3[</span>1] = "Franklin"<span>
document.write(arr.concat(arr2,arr3))
</span></script>
<span>
输出:
George,John,Thomas,James,Adrew,Martin,William,Franklin</span>
obj.indexOf(substring,start) 子序列位置
<span>定义和用法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(searchvalue,fromindex)
参数 描述
searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 </span>0 到 stringObject.length - 1<span>。如省略该参数,则将从字符串的首字符开始检索。
提示和注释
注释:indexOf() 方法对大小写敏感!
注释:如果要检索的字符串值没有出现,则该方法返回 </span>-1<span>。
实例
在本例中,我们将在 </span>"Hello world!"<span> 字符串内进行不同的检索:
</span><script type="text/javascript">
<span>var</span> str="Hello world!"<span>
document.write(str.indexOf(</span>"Hello") + "<br />"<span>)
document.write(str.indexOf(</span>"World") + "<br />"<span>)
document.write(str.indexOf(</span>"world"<span>))
</span></script>
<span>
以上代码的输出:
</span>0
-1
6
obj.lastIndexOf(substring,start) 子序列位置
<span>定义和用法
lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
语法
stringObject.lastIndexOf(searchvalue,fromindex)
案例:
</span><script type="text/javascript">
<span>var</span> str="Hello world world!"<span>
document.write(str.lastIndexOf(</span>"Hello") + "<br />"<span>)
document.write(str.lastIndexOf(</span>"World") + "<br />"<span>)
document.write(str.lastIndexOf(</span>"world"<span>))
</span></script>
<span>以上代码的输出:
</span>0
-1
12
obj.substring(from, to) 根据索引获取子序列
<span>定义和用法
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
语法
stringObject.substring(start,stop)
参数 描述
start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
stop
可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 </span>1<span>。
如果省略该参数,那么返回的子串会一直到字符串的结尾。
实例
例子 </span>1<span>
在本例中,我们将使用 substring() 从字符串中提取一些字符:
</span><script type="text/javascript">
<span>var</span> str="Hello world!"<span>
document.write(str.substring(</span>3<span>))
</span></script>
<span>
输出:
lo world</span>!<span>
例子 </span>2<span>
在本例中,我们将使用 substring() 从字符串中提取一些字符:
</span><script type="text/javascript">
<span>var</span> str="Hello world!"<span>
document.write(str.substring(</span>3,7<span>))
document.write(str.substring(</span>3,str.length))<span>//</span><span>都行</span>
</script>
<span>
输出:
lo w</span>
obj.slice(start, end) 切片
<span>定义和用法
slice() 方法可从已有的数组中返回选定的元素。
语法
arrayObject.slice(start,end)
参数 描述
start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,</span>-1 指最后一个元素,-2<span> 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
返回值
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
说明
请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
提示和注释
注释:您可使用负值从数组的尾部选取元素。
注释:如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
实例
例子 </span>1<span>
在本例中,我们将创建一个新数组,然后显示从其中选取的元素:
</span><script type="text/javascript">
<span>var</span> arr = <span>new</span> Array(3<span>)
arr[</span>0] = "George"<span>
arr[</span>1] = "John"<span>
arr[</span>2] = "Thomas"<span>
document.write(arr </span>+ "<br />"<span>)
document.write(arr.slice(</span>1) + "<br />"<span>)
document.write(arr)
</span></script>
<span>
输出:
George,John,Thomas
John,Thomas
George,John,Thomas
例子 </span>2<span>
在本例中,我们将创建一个新数组,然后显示从其中选取的元素:
</span><script type="text/javascript">
<span>var</span> arr = <span>new</span> Array(6<span>)
arr[</span>0] = "George"<span>
arr[</span>1] = "John"<span>
arr[</span>2] = "Thomas"<span>
arr[</span>3] = "James"<span>
arr[</span>4] = "Adrew"<span>
arr[</span>5] = "Martin"<span>
document.write(arr </span>+ "<br />"<span>)
document.write(arr.slice(</span>2,4) + "<br />"<span>)
document.write(arr)
</span></script>
<span>
输出:
George,John,Thomas,James,Adrew,Martin
Thomas,James
George,John,Thomas,James,Adrew,Martin</span>
obj.toLowerCase() 小写
<span>定义和用法
toLowerCase() 方法用于把字符串转换为小写。
语法
stringObject.toLowerCase()
返回值
一个新的字符串,在其中 stringObject 的所有大写字符全部被转换为了小写字符。
实例
在本例中,</span>"Hello world!"<span> 将以小写字母来显示:
</span><script type="text/javascript">
<span>var</span> str="Hello World!"<span>
document.write(str.toLowerCase())
</span></script>
obj.toUpperCase() 大写
obj.split(delimiter, limit) 分割
<span>定义和用法
split() 方法用于把一个字符串分割成字符串数组。
语法
stringObject.split(separator,howmany)
参数 描述
separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
返回值
一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。
但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。
提示和注释
注释:如果把空字符串 (</span>""<span>) 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
注释:String.split() 执行的操作与 Array.join 执行的操作是相反的。</span>
<span>实例
例子 </span>1<span>
在本例中,我们将按照不同的方式来分割字符串:
</span><script type="text/javascript">
<span>var</span> str="How are you doing today?"<span>
document.write(str.split(</span>" ") + "<br />"<span>)
document.write(str.split(</span>"") + "<br />"<span>)
document.write(str.split(</span>" ",3<span>))
</span></script>
<span>
输出:
How,are,you,doing,today</span>?<span>
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,</span>?<span>
How,are,you
案例二:
a </span>= "alex7eric9uuuy"<span>;
a.split(</span>/d+/) 答案:["alex", "eric", "uuuy"<span>]
a.split(</span>/(d+)/) 答案:["alex", "7", "eric", "9", "uuuy"<span> ]
a.split(</span>/(d+)e/) 答案:["alex", "7", "ric", "9", "uuuy"]
obj.search(regexp) 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
<span>定义和用法
search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
语法
stringObject.search(regexp)
参数 描述
regexp
该参数可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp 对象。
注释:要执行忽略大小写的检索,请追加标志 i。
返回值
stringObject 中第一个与 regexp 相匹配的子串的起始位置。
注释:如果没有找到任何匹配的子串,则返回 </span>-1<span>。
说明
search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。
实例
例子 </span>1<span>
在本例中,我们将检索 </span>"W3School"<span>:
</span><script type="text/javascript">
<span>var</span> str="Visit W3School!"<span>
document.write(str.search(</span>/W3School/<span>))
</span></script>
<span>
输出:
</span>6<span>
在下面的例子中,无法检索到 硕编程(因为 search() 对大小写敏感)。
</span><script type="text/javascript">
<span>var</span> str="Visit W3School!"<span>
document.write(str.search(</span>/硕编程/<span>))
</span></script>
<span>
输出:
</span>-1<span>
例子 </span>2<span>
在本例中,我们将执行一次忽略大小写的检索:
</span><script type="text/javascript">
<span>var</span> str="Visit W3School!"<span>
document.write(str.search(</span>/硕编程/<span>i))
</span></script>
<span>
输出:
</span>6
obj.match(regexp) 全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
<span>定义和用法
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
语法
stringObject.match(searchvalue)
stringObject.match(regexp)
参数 描述
searchvalue 必需。规定要检索的字符串值。
regexp 必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。
返回值
存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。</span>
<span>实例
例子 </span>1<span>
在本例中,我们将在 </span>"Hello world!"<span> 中进行不同的检索:
</span><script type="text/javascript">
<span>var</span> str="Hello world!"<span>
document.write(str.match(</span>"world") + "<br />"<span>)
document.write(str.match(</span>"World") + "<br />"<span>)
document.write(str.match(</span>"worlld") + "<br />"<span>)
document.write(str.match(</span>"world!"<span>))
</span></script>
<span>
输出:
world
</span><span>null</span><span>null</span><span>
world</span>!<span>
例子 </span>2<span>
在本例中,我们将使用全局匹配的正则表达式来检索字符串中的所有数字:
</span><script type="text/javascript">
<span>var</span> str="1 plus 2 equal 3"<span>
document.write(str.match(</span>/d+/<span>g))
</span></script>
<span>
输出:
</span>1,2,3
obj.replace(regexp, replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项,
$数字:匹配的第n个组内容;
$&:当前匹配的内容;
$`:位于匹配子串左侧的文本;
$‘:位于匹配子串右侧的文本
$$:直接量$符号
<span> 1</span>
<span>a
</span>
<span> 2</span> "alex7eric9Euuy"
<span> 3</span> a.replace(/d+/,"&"<span>)
</span><span> 4</span> "alex&eric9Euuy"
<span> 5</span> a.replace(/d+/g,"&"<span>)
</span><span> 6</span> "alex&eric&Euuy"
<span> 7</span> a.replace(/d+/g,"$"<span>)
</span><span> 8</span> "alex$eric$Euuy"
<span> 9</span> a.replace(/d+/,"$"<span>)
</span><span>10</span> "alex$eric9Euuy"
<span>11</span> a.replace(/(d+)/,"x"<span>)
</span><span>12</span> "alexxeric9Euuy"
<span>13</span> a.replace(/(d+)/g,"x"<span>)
</span><span>14</span> "alexxericxEuuy"
<span>15</span> a.replace(/(d+)/g,"$&"+"x"<span>)
</span><span>16</span> "alex7xeric9xEuuy"
<span>17</span> a.replace(/(d+)w+(d+)/g, "$1$2"<span>)
</span><span>18</span> "alex79Euuy"
<span>19</span> a.replace(/(d+)w+(d+)/g,"$2$1"<span>)
</span><span>20</span> "alex97Euuy"
<span>21</span> a.replace(/(d+)(w+)(d+)/g,"$3$1$2"<span>)
</span><span>22</span> "alex97ericEuuy"
<span>1</span> a.replace(/d+/g, "$`"<span>)
</span><span>2</span> "alexalexericalex7ericEuuy"
<span>3</span><span>a
</span><span>4</span> "alex7eric9Euuy"
<span>5</span> a.replace(/d+/g, "$`"<span>)
</span><span>6</span> "alexalexericalex7ericEuuy"
<span>7</span> a.replace(/d+/g, "$$"<span>)
</span><span>8</span> "alex$eric$Euuy"
3、布尔类型(Boolean)
布尔类型仅包含真假,与Python不同的是其首字母小写。
- == 比较值相等
- != 不等于
- === 比较值和类型相等
- !=== 不等于
- || 或
- && 且
4、数组
JavaScript中的数组类似于Python中的列表
常见功能:
<span>obj.length 数组的大小
obj.push(ele) 尾部追加元素
obj.pop() 尾部获取一个元素
obj.unshift(ele) 头部插入元素
obj.shift() 头部移除元素
obj.splice(start, deleteCount, value, ...) 插入、删除或替换数组的元素
obj.splice(n,</span>0<span>,val) 指定位置插入元素
obj.splice(n,</span>1<span>,val) 指定位置替换元素
obj.splice(n,</span>1<span>) 指定位置删除元素
obj.slice( ) 切片
obj.reverse( ) 反转
obj.join(sep) 将数组元素连接起来以构建一个字符串
obj.concat(val,..) 连接数组
obj.sort( ) 对数组元素进行排序<br /></span>
<span>实例
例子 </span>1<span>
在本例中,我们将创建一个数组,并按字母顺序进行排序:
</span><script type="text/javascript">
<span>var</span> arr = <span>new</span> Array(6<span>)
arr[</span>0] = "George"<span>
arr[</span>1] = "John"<span>
arr[</span>2] = "Thomas"<span>
arr[</span>3] = "James"<span>
arr[</span>4] = "Adrew"<span>
arr[</span>5] = "Martin"<span>
document.write(arr </span>+ "<br />"<span>)
document.write(arr.sort())
</span></script>
<span>
输出:
George,John,Thomas,James,Adrew,Martin
Adrew,George,James,John,Martin,Thomas
亲自试一试
例子 </span>2<span>
在本例中,我们将创建一个数组,并按字母顺序进行排序:
</span><script type="text/javascript">
<span>var</span> arr = <span>new</span> Array(6<span>)
arr[</span>0] = "10"<span>
arr[</span>1] = "5"<span>
arr[</span>2] = "40"<span>
arr[</span>3] = "25"<span>
arr[</span>4] = "1000"<span>
arr[</span>5] = "1"<span>
document.write(arr </span>+ "<br />"<span>)
document.write(arr.sort())
</span></script>
<span>
输出:
</span>10,5,40,25,1000,1
1,10,1000,25,40,5<span>
请注意,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:
</span><script type="text/javascript">
<span>function</span><span> sortNumber(a,b)
{
</span><span>return</span> a -<span> b
}
</span><span>var</span> arr = <span>new</span> Array(6<span>)
arr[</span>0] = "10"<span>
arr[</span>1] = "5"<span>
arr[</span>2] = "40"<span>
arr[</span>3] = "25"<span>
arr[</span>4] = "1000"<span>
arr[</span>5] = "1"<span>
document.write(arr </span>+ "<br />"<span>)
document.write(arr.sort(sortNumber))
</span></script>
<span>
输出:
</span>10,5,40,25,1000,1
1,5,10,25,40,1000
2<span>、简单数组自定义排序
</span><script type="text/javascript">
<span>var</span> arrSimple2=<span>new</span> Array(1,8,7,6<span>);
arrSimple2.sort(</span><span>function</span><span>(a,b){
</span><span>return</span> b-<span>a});
document.writeln(arrSimple2.join());
</span></script>
解释:a,b表示数组中的任意两个元素,若return > 0 b前a后;reutrn < 0 a前b后;a=<span>b时存在浏览器兼容
简化一下:a</span>-b输出从小到大排序,b-a输出从大到小排序。
四、其他
1、序列化
- JSON.stringify(obj) 序列化
-
<span>var</span> a = {a:1,b:2<span>} document.write(JSON.stringify(a)) 结果: {</span>"a":1,"b":2} - JSON.parse(str) 反序列化
-
<span>var</span> str = ‘{"name":"lala","age":"23"}‘<span>; document.write(JSON.parse(str)); 答案: [object, object]</span>
2、转义
- decodeURI( ) URl中未转义的字符
- decodeURIComponent( ) URI组件中的未转义字符
- encodeURI( ) URI中的转义字符
- encodeURIComponent( ) 转义URI组件中的字符
- escape( ) 对字符串转义
- unescape( ) 给转义字符串解码
- URIError 由URl的编码和解码方法抛出
3、eval
JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值。
- eval()
- EvalError 执行字符串中的JavaScript代码
-
详解及案例<span>定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。 语法 eval(string) 参数 描述 string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 例子 </span>1<span> 在本例中,我们将在几个字符串上运用 eval(),并看看返回的结果: </span><script type="text/javascript"><span> eval(</span>"x=10;y=20;document.write(x*y)"<span>) document.write(eval(</span>"2+2"<span>)) </span><span>var</span> x=10<span> document.write(eval(x</span>+17<span>)) </span></script> <span> 输出: </span>200 4 27
4、正则表达式
JavaScript中支持正则表达式,其主要提供了两个功能:
- test(string) 用于检测正则是否匹配
- exec(string) 用于获取正则匹配的内容
更多操作参见:http://kb.cnblogs.com/page/80965/
注:定义正则表达式时,“g”、“i”、“m”分别表示全局匹配,忽略大小写、多行匹配。
5、时间处理
JavaScript中提供了时间相关的操作,时间操作中分为两种时间:
- 时间统一时间
- 本地时间(东8区)
更多操作参见:http://www.shouce.ren/api/javascript/main.html
五、语句和异常
1、条件语句
JavaScript中支持两个中条件语句,分别是:if 和 switch
<span>if</span>
<span>(条件){
}</span>
<span>else</span>
<span>if</span>
<span>(条件){
}</span>
<span>else</span>
<span>{
}</span>
<span>switch</span>
<span>(name){
</span>
<span>case</span> ‘1‘<span>:
age </span>= 123<span>;
</span><span>break</span><span>;
</span><span>case</span> ‘2‘<span>:
age </span>= 456<span>;
</span><span>break</span><span>;
</span><span>default</span><span> :
age </span>= 777<span>;
}</span>
2、循环语句
JavaScript中支持三种循环语句,分别是:
<span>var</span> names = ["alex", "tony", "rain"<span>];
</span><span>for</span>(<span>var</span> i=0;i<names.length;i++<span>) {
console.log(i);
console.log(names[i]);
}</span>
<span>var</span> names = ["alex", "tony", "rain"<span>];
</span><span>for</span> (<span>var</span> index <span>in</span><span> names) {
console.log(index);
console.log(names[index]);
}</span>
<span>while</span>
<span>(条件){
</span>
<span>//</span>
<span> break;</span>
<span>//</span>
<span> continue;</span>
}
注:字典不支持i++方式
3、异常处理
<span>try</span>
<span> {
</span>
<span>//</span>
<span>这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行</span>
<span>}
</span>
<span>catch</span>
<span> (e) {<br /> //catch 意思是捕获
</span>
<span>//</span>
<span> 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。</span>
<span>//</span>
<span>e是一个局部变量,用来指向Error对象或者其他抛出的对象</span>
<span>}
</span>
<span>finally</span>
<span> {
</span>
<span>//</span>
<span>无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。</span>
}
注:主动跑出异常 throw Error(‘xxxx‘)---类似于python的raise
六、函数
1、基本函数
JavaScript中函数基本上可以分为一下三类:
<span>//</span>
<span>普通函数</span>
<span>function</span>
<span> func(arg) {
</span>
<span>return</span>
<span>true</span>
<span>;
}
</span>
<span>//</span>
<span>匿名函数</span>
<span>var</span> func = <span>function</span><span>(arg){
</span><span>return</span> "tony"<span>;
} <br /></span>
function test(_param,_callback){
处理....
_callback(处理完的参数)
}
test(123,function(a){alert(a)})
<span>//</span>
<span>自执行函数</span>
(<span>function</span><span>(arg){
console.log(arg);
}) </span>
注意:对于JavaScript中函数参数,实际参数的个数可能小于形式参数的个数,函数内的特殊值arguments中封装了所有实际参数。
2、作用域
JavaScript中每个函数都有自己的作用域,当出现函数嵌套时,就出现了作用域链。当内层函数使用变量时,会根据作用域链从内到外一层层的循环,如果不存在,则异常。
<span>//</span>
<span> name = "alex";</span>
<span>
//</span>
<span> function f1() {</span>
<span>
//</span>
<span> var name = "eric";</span>
<span>
//</span>
<span> function f2() {</span>
<span>
//</span>
<span> alert(name)</span>
<span>
//</span>
<span> };</span>
<span>
//</span>
<span> f2();</span>
<span>
//</span>
<span> };</span>
<span>
//</span>
<span>
//</span>
<span> f1();</span>
name = "alex"<span>;
</span><span>function</span><span> f1() {
</span><span>var</span> name = "eric"<span>;
</span><span>function</span><span> f2() {
alert(name);
}
</span><span>return</span><span> f2
}
</span><span>var</span> ret =<span> f1();
ret();</span>
<span>function</span>
<span> f2(){
</span>
<span>var</span> arg= [11,22<span>];
</span><span>function</span><span> f3(){
console.log(arg);
}
arg </span>= [44,55<span>];
</span><span>return</span><span> f3;
}
ret </span>=<span> f2();
ret();</span>
注:声明提前,在JavaScript引擎“预编译”时进行。
五句话搞定JavaScript作用域:http://www.cnblogs.com/wupeiqi/p/5649402.html
3、闭包
「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」
由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。
<span>function</span>
<span> f2(){
</span>
<span>var</span> arg= [11,22<span>];
</span><span>function</span><span> f3(){
a </span>= 123<span>;
</span><span>return</span><span> a;
}
</span><span>return</span><span> f3;
}
ret </span>=<span> f2();
ret();
已这个例子为例,f2就是一个闭包,那么我在执行调用的时候只能通过f2去调用,也就是由外向内去获取调用;而不能由内向外</span>
4、面向对象
<span>function</span>
<span> Foo (name,age) {
</span>
<span>this</span>.Name =<span> name;
</span><span>this</span>.Age =<span> age;
</span><span>this</span>.Func = <span>function</span><span>(arg){ //相当于创建python的方法,但是这样每个对象都有,相对每个对象都会占有一份地址
</span><span>return</span><span>this</span>.Name +<span> arg;
}
}</span>
对于上述代码需要注意:
- Foo充当的构造函数 ---class className()
- this代指对象 -----self.Name = name
- 创建对象时需要使用 new
上述代码中每个对象中均保存了一个相同的Func函数,从而浪费内存。使用原型和可以解决该问题:
<span>function</span>
<span> Foo (name, age) {
</span>
<span>this</span>.Name =<span> name;
</span><span>this</span>.Age =<span> age;
}
Foo.prototype </span>=<span> {
GetInfo: </span><span>function</span><span>(){
</span><span>return</span><span>this</span>.Name + <span>this</span><span>.Age;
},
Func : </span><span>function</span><span>(arg) {
</span><span>return</span><span>this</span>.Name +<span> arg;
}
}<br />Foo.prototype.Func = function () {<span>return <span>this.Name + <span>this<span>.Age</span></span></span></span>};//第二种方法<br />
obj1 </span>= <span>new</span> Foo(‘damon‘, 18<span>)
ret </span>= obj1.Func();
原文:http://www.cnblogs.com/renfanzi/p/5649543.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!