导航栏 ×
66职场网 > 工作总结 > 导航 >

JavaScript工作总结

工作总结|JavaScript工作总结(通用11篇)

发布时间:2018-07-05

JavaScript工作总结(通用11篇)。

一. JavaScript工作总结

基础篇

javascript:变量的声明

以下是几种声明变量的方式

复制代码 代码如下:

var value;

var value,value1,value2;//同时声明多个变量,但是这些变量的值都是undefined

var i = 0,j = 0,k=100;//变量声明,初始化一体。

//如果大家尝试读一个不存在的变量(值)会报错!但是尝试给一个未使用Var声明的变量赋值,javascript

//会隐式的`声明改变量,而且声明了的变量还是全局的。细节:所以大家创建变量都尽量使用Var

//变量的作用域(这个问题也容易出,大家要搞明白)

javascript:变量的作用域

这些都是细节,和我一样初学的一定要注意避免!

复制代码 代码如下:

var golbal = "golbal"; //全局变量

var local ="local";

function area()

{

//局部变量的优先级比全局变量的高

var local = "arealocal"

//当函数体内声明的变量名和全局变量名相同时,javascript 会隐藏全局变量

var golbal ="areagolbal";

document.write("local is :"+local + "and golbal is :" + golbal +"

");

}

area();

//输出:local is :arealocaland golbal is :areagolbal

在嵌套的函数里面定义局部变量,效果会怎么样呢?看下面:

复制代码 代码如下:

var hope = "moremoney";

function createmore()

{

var hope = "have more money";//局部

function createmoreto()//嵌套函数

{

var hope = "have more money to much";//局部

document.write("Createmoreto hope is :"+hope +"

");

//输出:Createmoreto hope is :have more money to much

}

createmoreto();//调用

document.write("Createmore hope is :" +hope +"

");

//输出:Createmore hope is :have more money

}

createmore(); //调用

javascript:传值和传址

这里也是比较重要的概念!不要漏了。

复制代码 代码如下:

传值 传址

复制 实际复制的值,存在不同的、 复制的只是对数字的引用。如果通过这个

独立的拷贝。 新的引用修改了数值,这个改变对最初的

引用来说也是可见的。

传递 传递给函数的是值的独立拷贝 传递给函数的是对数值的引用,如果函数

对它的改变在函数外没有影响 通过传递给它的引用修改了数值,这个改

变也是可见的。

比较 比较这两个对立的值,通常逐 比较的是两个引用,以判断它们引用的是否

字节的比较,以判断是否相等 是同一个数值。

javascript:基本类型和引用类型

javascript的基本规则是:基本类型通过传值来操作,引用类型通过传址来操作。(什么事值类型,或者什么事引用看我上一篇)

复制代码 代码如下:

按值传递

var value = 1;

var copyvalue = value; //将value赋给另一个变量

function addTotal(total,arg)

{

total+= arg; //total = total + arg 效果等同

}

//调用函数,传两个参数(大家可能会认为这个函数改变了全局变量的值,其实没有,函数用的也是对立拷贝)

addTotal(value,copyvalue);

if(value == 1) copyvalue = 2;

document.write("total t" + value + "and copyvalue tt" + copyvalue+"

");

//最后输出:total 1and copyvalue 2

复制代码 代码如下:

按址传递

var array = new Array("Javascccp");

var objarray = array;

function modifyArray(arr)

{

arr[0] = "JAVASCRIPT";

}

//没调用函数前

document.write(array[0] +"

");

//输出Javascccp;

//调用函数后

modifyArray(array);

document.write(array[0]+"

");

//输出大写JAVASCRIPT

//通过修改objarray会是一样的效果

objarray[0] = "Frank";

document.write(array[0]+"

");

//输出Frank;

小结:上面内容希望大家都不要错过,对学习后面的知识还是很有帮助的!

二. JavaScript工作总结

JavaScript 是一种新的描述语言,此一语言可以被箝入 HTML 的文件之中。透过 JavaScript 可以做到回应使用者的需求事件 (如: form 的输入) 而不用任何的网路来回传输资料,所以当一位使用者输入一项资料时,它不用经过传给伺服端 (server)处理,再传回来的过程,而直接可以被客户端 (client) 的应用程式所处理。你也可以想像成有一个可执行程式在你的客端上执行一样!目前已有一些写好的程式在Internet 上你可以连过去看看,以下有一些计算器的例子,在 Nescape 上。JavaScript 和 Java 很类似,但到底并不一样! Java 是一种比 JavaScript 更复杂许多的程式语言,而 JavaScript 则是相当容易了解的语言。JavaScript 创作者可以不那麽注重程式技巧,所以许多 Java 的特性在 Java Script 中并不支援。与JSP相比,它只能处理以客户端环境为基础的动态信息。由于是在客户端运行,javascript不能访问服务器端资源,比如数据库、目录信息等等。

三. JavaScript工作总结

本文实例讲述了JS匿名函数。分享给大家供大家参考,具体如下:

/* 匿名函数*/(function() {var foo = 10;var bar = 2;alert(foo * bar);})();/* 匿名函数,带参数*/(function(foo, bar) {alert(foo * bar);})(10, 2);/* 匿名函数返回值 */var baz = (function(foo, bar) {return foo * bar;})(10, 2);// baz will equal 20./* 匿名函数关闭 */var baz;(function() {var foo = 10;var bar = 2;baz = function() {return foo * bar;};})();baz();

希望本文所述对大家JavaScript程序设计有所帮助。

四. JavaScript工作总结

图的定义

图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。

有向图

有向边:若从顶点Vi到Vj的边有方向,则称这条边为有向边,也成为弧(Arc),用有序偶来表示,Vi称为弧尾,Vj称为弧头。

无序图

无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边(Edge),用无序偶(Vi,Vj)来表示。

简单图

简单图:在图结构中,若不存在顶点到其自身的边,且同一条边不重复出现,则称这样的图为简单图。

图类

表示顶点

创建图类的第一步就是要创建一个Vertex类来保存顶点和边。这个类的作用和链表、二叉搜索树的Node类一样。Vertex类有两个数据成员:一个用于标识顶点,另一个表明是否被访问过的布尔值。分别被命名为label和wasVisited。

复制代码 代码如下:

function Vertex(label){

this.label = label;

}

我们将所有顶点保存在数组中,在图类里,可以通过他们在数组中的位置引用他们

表示边

图的实际信息都保存在“边”上面,因为他们描述了图的结构。二叉树的一个父节点只能有两个子节点,而图的结构却要灵活得多,一个顶点既可以有一条边,也可以有多条边和它相连。

我们将表示图的边的方法成为邻接表或者邻接表数组。它将存储由顶点的相邻顶点列表构成的数组

构建图

定义如下一个Graph类:

复制代码 代码如下:

function Graph(v){

this.vertices = v;//vertices至高点

this.edges = 0;

this.adj = [];

for(var i =0;I

this.adj[i] = [];

this.adj[i].push(');

}

this.addEdge = addEdge;

this.toString = toString;

}

这个类会记录一个图表示了多少条边,并使用一个长度与图的顶点数来记录顶点的数量。

复制代码 代码如下:

function addEdge(){

this.adj[v].push(w);

this.adj[w].push(v);

this.edges++;

}

这里我们使用for循环为数组中的每个元素添加一个子数组来存储所有的相邻顶点,并将所有元素初始化为空字符串。

图的遍历

深度优先遍历

深度优先遍历(DepthFirstSearch),也有称为深度优先搜索,简称为DFS。

比如在一个房间内寻找一把钥匙,无论从哪一间房间开始都可以,将房间内的墙角、床头柜、床上、床下、衣柜、电视柜等挨个寻找,做到不放过任何一个死角,当所有的抽屉、储藏柜中全部都找遍后,接着再寻找下一个房间。

深度优先搜索:

深度优先搜索就是访问一个没有访问过的顶点,将他标记为已访问,再递归地去访问在初始顶点的邻接表中其他没有访问过的顶点

为Graph类添加一个数组:

复制代码 代码如下:

this.marked = [];//保存已访问过的'顶点

for(var i=0;i

this.marked[i] = false;//初始化为false

}

深度优先搜索函数:

复制代码 代码如下:

function dfs(v){

this.marked[v] = true;

//if语句在这里不是必须的

if(this.adj[v] != undefined){

print("Visited vertex: " + v );

for each(var w in this.adj[v]){

if(!this.marked[w]){

this.dfs(w);

}

}

}

}

广度优先搜索

广度优先搜索(BFS)属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。

广度优先搜索从第一个顶点开始,尝试访问尽可能靠近它的顶点,如下图所示:

其工作原理为:

1. 首先查找与当前顶点相邻的未访问的顶点,将其添加到已访问顶点列表及队列中;

2. 然后从图中取出下一个顶点v,添加到已访问的顶点列表

3. 最后将所有与v相邻的未访问顶点添加到队列中

下面是广度优先搜索函数的定义:

复制代码 代码如下:

function bfs(s){

var queue = [];

this.marked = true;

queue.push(s);//添加到队尾

while(queue.length>0){

var v = queue.shift();//从队首移除

if(v == undefined){

print("Visited vertex: " + v);

}

for each(var w in this.adj[v]){

if(!this.marked[w]){

this.edgeTo[w] = v;

this.marked[w] = true;

queue.push(w);

}

}

}

}

最短路径

在执行广度优先搜索时,会自动查找从一个顶点到另一个相连顶点的最短路径

确定路径

要查找最短路径,需要修改广度优先搜索算法来记录从一个顶点到另一个顶点的路径,我们需要一个数组来保存从一个顶点操下一个顶点的所有边,我们将这个数组命名为edgeTo

复制代码 代码如下:

this.edgeTo = [];//将这行添加到Graph类中

//bfs函数

function bfs(s){

var queue = [];

this.marked = true;

queue.push(s);//添加到队尾

while(queue.length>0){

var v = queue.shift();//从队首移除

if(v == undefined){

print("Visited vertex: " + v);

}

for each(var w in this.adj[v]){

if(!this.marked[w]){

this.edgeTo[w] = v;

this.marked[w] = true;

queue.push(w);

}

}

}

}

拓扑排序算法

拓扑排序会对有向图的所有顶点进行排序,使有向边从前面的顶点指向后面的顶点。

拓扑排序算法与BFS类似,不同的是,拓扑排序算法不会立即输出已访问的顶点,而是访问当前顶点邻接表中的所有相邻顶点,直到这个列表穷尽时,才会将当前顶点压入栈中。

拓扑排序算法被拆分为两个函数,第一个函数是topSort(),用来设置排序进程并调用一个辅助函数topSortHelper(),然后显示排序好的顶点列表

拓扑排序算法主要工作是在递归函数topSortHelper()中完成的,这个函数会将当前顶点标记为已访问,然后递归访问当前顶点邻接表中的每个顶点,标记这些顶点为已访问。最后,将当前顶点压入栈中。

复制代码 代码如下:

//topSort()函数

function topSort(){

var stack = [];

var visited = [];

for(var i =0;i

visited[i] = false;

}

for(var i = 0;i

if(visited[i] == false){

SortHelper(i,visited,stack);

}

}

for(var i = 0;i

if(stack[i] !=undefined && stack[i] != false){

print(this.vertexList[stack[i]]);

}

}

}

//topSortHelper()函数

function topSortHelper(v,visited,stack){

visited[v] = true;

for each(var w in this.adj[v]){

if(!visited[w]){

SortHelper(visited[w],visited,stack);

}

}

stack.push(v);

}

五. JavaScript工作总结

函数的语法:

arrayObject.sort(sortby)

you think this is not the right way but you love it

这里还用到了split函数,目的是去到一个字符串的数组,比较常用。然后通过数组的.排序函数sort()对数组内的值进行排序,得到新的数组,然后通过循环输出数组的内容就得到了排序后的字符串。

在例子中,默认情况下,它会按照ascii码来进行排序。

如果是数字的话,又会怎样呢?试一下~

修改p中的值如下:

20 38 19 32 654 2 123 454 4

运行结果为:123 19 2 20 32 38 4 454 654

它是按照字符编码来排序了,而不是数值的大小。

如果要对数字进行排序的话,需要多写几行代码:

修改后的代码如下:

originarr = originarr.sort(function(a,b){ return a - b; });

运行结果:2 4 19 20 32 38 123 454 654

上面的排序都是按照正顺序来排的,如果是反顺序的话,那么就需要再改动一下:

把函数中的return a - b;改为return b - a即可。

如果是字母的排序,更改后的代码如下:

originarr = originarr.sort(function(a,b){ if(a > b) return -1; if(a < b) return 1; return 0; });

希望本文所述对大家的javascript程序设计有所帮助。

六. JavaScript工作总结

稀疏数组是指数组的下标并不是从0开始,一般数组的长度要比元素的个数要多:

var arr1=[undefined];var arr2=new Array(1);0 in arr1; //true0 in arr2; //falsevar arr3=new Array(100);arr3[99]="赋值";99 in arr3; //true98 in arr3; //false

arr1中是因为数组第1列是有值的,虽然是undefined,arr2只是指定了数组长度,第1列还是没有值,所以用in语句会返回false。arr3中给第第100个元素赋值后检测是有值的,对其他列的key是没有影响的,所以还是返回了false。

以上所述是小编给大家介绍的Javascript数组的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我们留言,小编会及时回复大家的。在此也非常感谢大家对的支持!

七. JavaScript工作总结

有两种可以用在循环中的声明:break和continue。

JavaScriptbreak和continue声明

  有两种特殊的声明可用在循环内部:break和continue。

Break

break命令可以终止循环的运行,然后继续执行循环之后的.代码(如果循环之后有代码的话)。

实例:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

结果:

Thenumberis0

Thenumberis1

Thenumberis2Continue

continue命令会终止当前的循环,然后从下一个值继续运行。

实例:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

结果:

Thenumberis0

Thenumberis1

Thenumberis2

Thenumberis4

Thenumberis5

Thenumberis6

Thenumberis7

Thenumberis8

Thenumberis9

Thenumberis10

八. JavaScript工作总结

缩短JavaScript的下载时间

大多数编程语言要么是编译型的,要么在代码安装的计算机中运行,或两者兼而有之。例如,使用诸如Python、PHP或Perl等脚本语言 时,代码在执行前不需要通过网络传输,而在本地运行。诸如Java等其他语言的代码被编译成二进制文件,可在执行前通过网络传输。考虑到这种情况,采用了 大量措施以使二进制格式更加紧凑。

JavaScript不属于上述任何一种情况,其源代码及用到的库将被浏览器按原样下载。因此,JavaScript代码的总体大小以及如何 将代码打包为文件对页面性能的影响巨大,这在刚开始编码时可能无关紧要,但随着编写的代码和使用的库越来越多,很快将导致下载页面使用的 JavaScript代码时需要相当长的时间。

九. JavaScript工作总结

开门必读

math和其他对象不同,Math对象是一个静态对象,而不是构造函数。实际上,Math只是一个由Javascript设置的对象命名空间,用于存储数学函数

  属性

Math.E 自然对数的底数,即常量e的值(约等于2.718)

Math.PI 派的值(约等于3.14159)

console.log(Math.E);//2.718281828459045

console.log(Math.PI);//3.141592653589793

Math.LN2 2的自然对数(约等于0.693)

Math.LN10 10的自然对数(约等于2.302)

Math.LOG2E 以2为底e的对数(约等于1.414)

Math.LOG10E 以10为底e的对数(约等于0.434)

console.log(Math.LN2);//0.6931471805599453

console.log(Math.LN10);//2.302585092994046

console.log(Math.LOG2E);//1.4426950408889634

console.log(Math.LOG10E);//0.4342944819032518

Math.SQRT2 2的平方根(约等于1.414)

Math.SQRT1_2 1/2的平方根,即2的平方根的倒数(约等于0.707)

console.log(Math.SQRT2);//1.4142135623730951

console.log(Math.SQRT1_2);//0.7071067811865476

方法

这些方法都涉及到Number()隐式类型转换;若超出方法范围,将返回NaN

Math.min() 返回一组数字中的最小值

Math.max() 返回一组数字中的.最大值

console.log(Math.min(1,2,3));//1

console.log(Math.max(1,2,3));//3

Math.ceil(num) 向上舍入为整数

Math.floor(num) 向下舍入为整数

Math.round(num) 四舍五入为整数

console.log(Math.ceil(12.6));//13

console.log(Math.floor(12.6));//12

console.log(Math.round(12.6));//13

Math.abs(num) 返回num的绝对值

Math.random() 返回大于等于0小于1的一个随机数

console.log(Math.abs(-10));//10

console.log(Math.random());//0.741887615993619

Math.exp(num) 返回Math.E的num次幂

Math.log(num) 返回num的自然对数

Math.sqrt(num) 返回num的平方根(x必须是大于等于0的数)

Math.pow(num,power) 返回num的power次幂

console.log(Math.exp(0));//1

console.log(Math.log(10));//2.302585092994046

console.log(Math.sqrt(100));//10

console.log(Math.pow(10,2));//100

Math.sin(x) 返回x的正弦值

s(x) 返回x的余弦值

Math.tan(x) 返回x的正切值

Math.asin(x) 返回x的反正弦值(x必须是-1到1之间的数)

Math.acos(x) 返回x的反余弦值(x必须是-1到1之间的数)

Math.atan(x) 返回x的反正切值

Math.atan2(y,x) 返回y/x的反正切值

console.log(Math.sin(30*Math.PI/180));//0.49999999999999994

console.log(s(60*Math.PI/180));//0.5000000000000001

console.log(Math.tan(45*Math.PI/180));//0.9999999999999999

console.log(Math.asin(1)*180/Math.PI);//90

console.log(Math.acos(1)*180/Math.PI);//0

console.log(Math.atan(1)*180/Math.PI);//45

console.log(Math.atan2(1,1)*180/Math.PI);//45

  tips

[tips1]找到数组中的最大或最小值

var values = [1,2,3,4,5,6,7,8];var max = Math.max.apply(Math,values);//8

[tips2]从某个整数范围内随机选择一个值

value = Math.floor(Math.random()*可能值的总数 + 第一个可能的值)

[tips3]通过最小值和最大值随机选择一个值

function selectFrom(lowerValue,upperValue){var choices = upperValue - lowerValue + 1;return Math.floor(Math.random()*choices + lowerValue);}var num = selectFrom(2,10);console.log(num);

Math 对象方法

abs(x) 返回数的绝对值。 acos(x) 返回数的反余弦值。 asin(x) 返回数的反正弦值。 atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。 atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。 ceil(x) 对数进行上舍入。 cos(x) 返回数的余弦。 exp(x) 返回 e 的指数。 floor(x) 对数进行下舍入。 log(x) 返回数的自然对数(底为e)。 max(x,y) 返回 x 和 y 中的最高值。 min(x,y) 返回 x 和 y 中的最低值。 pow(x,y) 返回 x 的 y 次幂。 random() 返回 0 ~ 1 之间的随机数。 round(x) 把数四舍五入为最接近的整数。 sin(x) 返回数的正弦。 sqrt(x) 返回数的平方根。 tan(x) 返回角的正切。 toSource() 返回该对象的源代码。 valueOf() 返回 Math 对象的原始值。

方法描述


十. JavaScript工作总结

本文实例分析了Javascript数组与字典用法。分享给大家供大家参考。具体分析如下:

Javascript 的数组Array,既是一个数组,也是一个字典(Dictionary).

先举例看看数组的用法。

复制代码 代码如下:var a = new Array();

a[0] = "Acer";

a[1] = "Dell";

for (var i in a) {

alert(i);

}

上面的代码创立了一个数组,每个元素都是一个字符串对象。

然后对数组进行遍历。注意 i 的结果为 0 和 1,a[i] 的结果才为字符串。

这个很象上一篇中说到的遍历对象的属性。

下面再看一下字典的用法。

复制代码 代码如下:var computer_price = new Array();

computer_price["Acer"] = 500;

computer_price["Dell"] = 600;

alert(computer_price["Acer"]);

我们甚至可以同样象上面那样遍历这个数组(字典)

复制代码 代码如下:for (var i in computer_price) {

alert(i + ": " + computer_price[i]);

}

这里的 i 即为字典的每个键值。输出结果为:

Acer: 500

Dell: 600

下面,看一下Javascript的有趣之处,还是上面那个例子。

我们可以把 computer_price 看成一个字典对象,而它的每个键值就是一个属性。

也就是说 Acer 是 computer_price 的一个属性。我们可以这样使用它: computer_price.Acer

下面再来看一下字典和数组的`简化声明方式。

复制代码 代码如下:var array = [1, 2, 3]; // 数组

var array2 = { "Acer": 500, "Dell": 600 }; // 字典

alert(array2.Acer); // 50

这样对字典的声明是和前面的一样的。在我们的例子中,Acer又是键值,也可是作为字典对象的属性了。

希望本文所述对大家的javascript程序设计有所帮助。

十一. JavaScript工作总结

javascript基础知识大全

大多数人觉得学习JavaScript是一件容易的事情,其实也并没有错,js的确是一个容易上手的语言。这就导致很多人都会用JavaScript,但却很少有人能用的很精通的原因,因为他们大小看js这门语言的基础和内在了,基础,无论何时都是一个重要的存在,最直接的就是在你面试的时候,如果连js的数据类型都答不上来那是不是就太过分了…… 接下来,就让我们一起总结一下JavaScript的基础。

一、语法

------------------------------

javascript中的一切(变量、函数名和操作符)都区分大小写。

标识符:就是指变量、函数、属性的名字,标识符要求如下

1 第一个字符必须是一个字母、下划线(_)或一个美元符号($)

2 其他字符可以是字母、下划线、美元符号或数字

3 不能把关键字、保留字、true、false、null用作标识符

注释

// 单行注释

/*

*

* 多行注释

*

*/

严格模式

严格模式是ES5引入的,严格模式定义一种不同的解析和执行模式,在严格模式下,对某些不安全的操作会跑出错误

// 在整个脚本中启用严格模式,可以在顶部添加如下代码

"use strict"

// 也可以指定函数在严格模式下执行

function doSomething(){

"use strict"

// ....

}

二、变量和数据类型

------------------------------

变量

1、ESCMscript中的变量是松散类型的,即JavaScript使弱类型语言,换句话说js中的变量仅仅是一个保存值得占位符而已,可以保存任何类型的值。

2、定义变量用 var 操作符。

3、使用var操作符定义的变量将成为定义该变量的作用域中的局部变量。

4、在函数作用域(块作用域)中可以通过省略var定义全局变量(不推荐)。

数据类型

1、js中有5中基本数据类型和1中复杂数据类型他们分别是

Undefined、Null、Boolean、Number、String和Object

2、typeof操作符用来检测变量的数据类型,对一个值使用typeof操作符会返回字一个 字符串 ,标示着该值得类型:

“undefined” —- 如果这个值未定义

“boolean” —- 如果这个值是布尔值

“string” —- 如果这个值是字符串

“number” —- 如果这个值是数值

“object” —- 如果这个值是对象或null

“function” —- 如果这个值是函数

3、js的6中数据类型与使用typeof判断出来的数据类型并不对应,区别就在于使用typeof得到的类型标示中没有”null”,而是多了一个”function”,其他的都是一样的,还要注意的就是对null是用typeof时会返回”object”,并且typeof操作符得到的是字符串。

三、语句

------------------------------

if语句

语法:

if(条件){

}else if(条件){

}else{

}

解释:

其中,条件可以是任意表达式,而且对这个表达式的求值结果不一定非得是Boolean值,ES会自动调用Boolean()转换函数将这个表达式的结果转换成一个布尔值。

while语句

语法:

while(条件){

something...

}

解释:

其中条件同if语句中的条件,while语句是前测试循环语句,即在执行循环体之前就要对条件表达式求值,所以循环体有可能永远不会执行。

do-while语句

语法:

do{

something...

}while(条件)

解释:

其中条件同if语句中的条件,do-while语句是后测试循环语句,即在对条件表达式求值之前,循环体中的代码至少被执行一次。有趣的记法就是(while是先问再揍,do-while是揍完再问)。

for语句

语法:

for(初始化代码, 条件, 执行循环体后要执行的代码){

something...

}

解释:

for语句也是一种前测试循环语句,所以循环体也有可能永远不会执行,for语句和while语句的区别就是,在执行循环之前初始化变量和定义循环后要执行的代码的能力。

for-in语句

语法:

for(property in expression){

something...

}

解释:

for-in语句是一种精准的迭代语句,用来枚举对象的属性,需要注意的是,for-in语句输出的属性名的'顺序是不可测的,因浏览器而异。

switch语句

语法:

switch(表达式){

case value :

statement

break;

case value :

statement

break;

case value :

statement

break;

default :

statement

}

解释:

switch语句是与if语句最密切的流程控制语句,JavaScript中的switch语句有很多自己的特色,首先:可以在switch语句中使用任何数据类型,其次:每个case的值(即value),不仅仅只能是常量,也可以是变量甚至表达式。

label语句

语法:

label : statement

// 实例

start : for(var i = 0; i < count; i++){

alert(i)

}

解释:

使用label语句可以在代码中添加标签,以便将来使用,上面例子中的start标签可以在将来由break或continue语句引用,使代码跳至标签开始出执行,一般label语句都要与for语句等循环语句中的break或continue配合只用。

break和continue语句

语法:

// 例子

mylabel :

for(var i = 0; i < 10; i++){

for(var j = 0; j < 10; j++){

if(i == 5 && j == 5){

break mylabel;

// continue mylabel;

}

}

}

解释:

break和continue语句都是用来跳出循环的语句,不同之处在于break语句会强制执行后面的语句,而continue语句只是跳出本次循环继续执行下次循环。上面的例子中,结合使用break语句和label语句,控制代码的执行。

with语句

解释:

with语句的作用是将代码的作用域设置到特定的对象中。严格模式下使用with语句会报错。定义with语句的目的是简化同一个对象的多次编写问题,如下例:

var qs = location.search.substring(1);

var hostName name;

var url = location.href;

// 上面的代码中都包含location对象,使用with语句可以将代码简化如下

with(location){

var qs = search.substring(1);

var hostName = hostname;

var url = href;

}

四、函数

------------------------------

JavaScript中的函数使用function关键字来声明

function(arg0, arg1, arg2, ..., argn){

statements

}

理解参数

JavaScript中的参数有一下特点:

不介意你传递几个参数,即使你在定义函数时规定了接收几个参数,它都不会报错。

不在乎你传递的参数是什么数据类型。

之所以会这样,是因为JavaScript函数内部的参数使用一个类数组对象来表示的,所以函数接收到的始终都是这个类数组对象,而不关心这个对象里面有什么参数,在函数体内可以是用arguments对象来访问这个类数组对象,可以使用方括号的语法如:arguments[0]、arguments[1]等,这个事实说明一个重要的特点:

命名参数并不是必须的,它只是提供了便利而已。

通过arguments的length属性获知有多少个参数传递给了函数:

function howManyArgs(){

alert(arguments.length);

}

howManyArgs("string", 1); // 2

howManyArgs();   // 0

howManyArgs(1);   // 1

关于arguments有一点比较有意思,就是它的值永远与对应的形式参数同步,即修改了arguments[0]的值会使对应的命名参数的值也发生相应的改变。但是这并不是说他们访问的是相同的内存空间,他们有独立的存储空间,只不过值会同步而已,另外如果值传递一个参数,修改arguments[1]的值是不会改变对应的命名参数的值的,这是应为,arguments.length的长度是由传递参数个数决定的,而不是命名参数的个数决定的,在这里再次强调一次, 命名参数只是提供了便利而已,没有任何其他作用 。

没有重载

由于JavaScript中的函数没有函数签名的特征,所以没有重载,不过可以通过检查传入函数的参数的类型和数量作出不同的反应来模拟重载。

文章来源://www.dm566.com/gongzuozongjie/74782.html