您的位置:首页 > Web前端 > JavaScript

JavaScript语法

2015-06-12 16:07 573 查看
1. 变量的定义和作用域

var a = 1; 类型为Number

var a = "1"; 类型为String

Number和String都是JS内置的对象。

作用域: 在函数外面定义--全局; 在方法内部定义--在方法体内有效。

变量是弱类型的,整数与字符串相加得到字符串。

不区分单引号和双引号;

2.语句、代码和代码块

JavaScript是发出的指令。每行句尾可以加上分号,多句同一行需要用分号隔开。代码块是用来更好的组织代码的。代码块使用花括号包裹。

3.注释

单行注释://

多行注释:/*开头,*/结尾

4.运算符

1) 算术符号:+、-、*、/、%(取余,保留整数)、++、--

说明:/除不尽有小数,能除尽为整数。JS不区分整数小数?

2)赋值运算符:=、+=、-=、*=、/=、%=

3)比较运算符:==、===(全等,值和类型)、!=、>、<、>=、<=

4)逻辑运算符:&&、||、!

5)条件赋值: ? :

variablename=(condition)?value1:value2

5.分支语句

1)if...else... if...else if...else

2)switch...case...

switch():判读的类型无限制。c中就只能是int型和char('a')型。

default不匹配条件时的操作。

6.循环语句

1)for(var a = 0; a < 10; a++)

2)while(a < 10) { a++ } ; do { a-- } while(a>0)

break:退出循环; continue:跳到下次循环。

3) for/in - 循环遍历对象的属性

var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
txt=txt + person[x];
}
7.函数

<script>
function goToUrl(strUrl)
{
location.href = strUrl;
}  <pre name="code" class="html"><script>




1) 函数需要返回值时,用return即可。

2) 函数可以在HTML事件/ FORM / JavaScript 中被调用,如:

a. HTML元素事件回调: <body onload="goToUrl('http://www.baidu.com')" > b. FORM元素事件回调 <select name="somelist" onchange="onSomeThingChanged()">

c. 超链接目标

<a href="javascript:goToUrl('www.baidu.com')" > go </a>

d. 直接在JavaScript中调用 <script> goToUrl(”www.baidu.com"); </script>

8. 类

一般的JavaScript是不需要使自定义类,不会这么复杂。难调试,不便阅读。如果一定要写什么复杂的功能,如菜单树之类的,就得写一点类来完成了。

1) 类定义
a. 不带参数

<script>
function SampleClass()
{
// 变量变量定义
this.nId = 10;

// 成员函数定义
this.plusId = function (nPlus)
{
return this.nId + nPlus;
}
}
</script>
b. 带参数

function MenuItem(l, h, t)
{
this.label = l;
this.href = h;
this.target = t;

this.toHtml = function()
{
var html = "<a href='" + this.href + "' ";

if(this.target != null)
html += (" target='" + this.target + "' ");

html += " >" + this.label + "</a>";
return html;
}
}


2)创建类的实例

var item = new MenuItem("haha", "http://www.baidu.com", null);

3)类需要注意

a. 在成员函数里引用成员变量,一定要加this.,不然引用不到
b. 成员函数如果想返回值,就用return,想return什么类型都不必事先声明,直接return就好

c. 对于学习C++和Java的程序员来说,要明白var p = new SomeClass();这句中的new其实就是创建一个对象并返回其指针

d. 考虑使用Object类

9. Object类

大多数情况下都不需要自己声明一个类,可以直接使用Object类来定义一个结构,而无需事先声明这个结构的形式。

function createObject()
{
var obj = new Object();
obj.x = 10;
obj.y = 11;
return obj;
}
这个函数随意的创建了一个object,为其添加成员 x, y,并没有通知任何人(无prototype声明)。而使用者也是直接就可以调用其 o.x , o.y

<script>
var o = createObject();
document.writeln("x=" + o.x + ", y=" + o.y);
</script>
10. 数组Array

<script>
// 创建
var a  = new Array();
// 遍例
for(var i=0; i<a.length; i++)
{
var e = a[i];
}
// 添加
var item = new MenuItem("000");
this.itemArray.push(item);
</script>
数组作为成员变量

function Menu()
{
this.itemArray = new Array();

this.addItem = function(l, h, t)
{
var item = new MenuItem(l,h,t);
this.itemArray.push(item);
};
}
1) 添加元素

push 方法将新元素添加到一个数组中,并返回数组的新长度值。

arrayObj.push([item1 [item2 [. . . [itemN ]]]])

参数:

arrayObj--必选项。一个 Array 对象。

item, item2,. . . itemN--可选项。该 Array 的新元素。

说明:

push 方法将以新元素出现的顺序添加这些元素。如果参数之一为数组,那么该数组将作为单个元素添加到数组中。如果要合并两个或多个数组中的元素,请使用 concat 方法。

var arr = new Array(0,1,2,3,4);
// 参数是一个或多个
var len = arr.push(5,6);
//len = arr.push(7);
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}


2) 删除元素

pop 方法

移除数组中的最后一个元素并返回该元素。

arrayObj.pop( )

必选的 arrayObj 引用是一个 Array 对象。

说明

如果该数组为空,那么将返回 undefined。

shift 方法

移除数组中的第一个元素并返回该元素。

arrayObj.shift( )

必选的 arrayObj 引用是一个 Array 对象。

说明

shift 方法可移除数组中的第一个元素并返回该元素。

var arr = new Array(0,1,2,3,4);
var remove = arr.pop();
alert(remove);
alert(arr.length);
splice 方法

从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。

arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])

参数:

arrayObj--必选项。一个 Array 对象。

start--必选项。指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。

deleteCount--必选项。要移除的元素的个数。

item1, item2,. . .,itemN--必选项。要在所移除元素的位置上插入的新元素。

说明:

splice 方法可以移除从 start 位置开始的指定个数的元素并插入新元素,从而修改 arrayObj。返回值是一个由所移除的元素组成的新 Array 对象。

如果你不想增加新的元素进去,那么不要传递第三个参数即可!

var arr = new Array(0,1,2,3,4);
// 删除从2开始的两个元素,位置从0开始
// 返回移除元素的数组
var reArr = arr.splice(2,2);
// 可以在移除元素的位置替换新的元素进去
//只是从移除开始位置进行增加新元素,如果你移除两个元素,你完全可以增加10个新元素进去
//var reArr = arr.splice(2,2,6,7,8,9);
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}


concat 方法 (Array)

返回一个新数组,这个新数组是由两个或更多数组组合而成的。

array1.concat([item1[, item2[, . . . [, itemN]]]])

参数:

array1 --必选项。其他所有数组要进行连接的 Array 对象。

item1,. . ., itemN--可选项。要连接到 array1 末尾的其他项目。

说明:

concat 方法返回一个 Array 对象,其中包含了 array1 和提供的任意其他项目的连接。

要加的项目(item1 … itemN)会按照从左到右的顺序添加到数组。如果某一项为数组,那么添加其内容到 array1 的末尾。如果该项目不是数组,就将其作为单个的数组元素添加到数组的末尾。

以下为从源数组复制元素到结果数组:

对于从正被连接到新数组的数组中复制的对象参数,复制后仍然指向相同的对象。不论新数组和源数组中哪一个有改变,都将引起另一个的改变。

对于连接到新数组的数值或字符串,只复制其值。一个数组中值有改变并不影响另一个数组中的值。

var arr = new Array(0,1);
var arr2 = new  Array(3,4);
var arr = arr.concat(arr2);
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}


执行顺序与生命周期

1) 从上到下依次执行/解析,调用一个function时,必须保证该function已经被解析/声明了。这就是一般要把function定义在<head>的原因。

2) 所有的function与变量只在本页面内有效,当离开页面后,新的页面内无法访问上一页内声明的变量或函数。如果一定要访问,可以使用Cookie也存一下,到下一页再读出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: