分类: Python/Ruby
2012-05-12 16:14:13
javascript与java语法相似。
注释://,/* */。
标识符(变量名、函数名、标签名):字母、数字、_、和$的组合,数字不能开头。
关键字:break、case、catch、continue、default、delete、do、else、false、finally、for、function、if、in、instanceof、new、null、return、switch、this、throw、true、try、typeof、var、void、while、with
预留关键字:abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto、implements、import、int、interface、long、native、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile
变量:var i=1+2+3; // var x=3, message="ok"。变量无类型,可以包含任何数据类型的值;声明在函数外的全局变量对整个javascript程序可见,声明在函数内的局部变量只在函数域内可见。javascript没有块级域的概念:定义在花括号里的变量在外部仍可见。
数据类型:数字(1、3.14、0xFF,用isNaN函数测试一个值不是数字);布尔(true、false);字符串('hello'、"OK"、'and "nested" ',16位unicode字符集);对象(var o = new Object()、var o={x:1, y:2, z:3}、o.x=1、o["x"]=1);数组(var a = new Array()、var a = new Array(1,2,3)、var a = [1, 2, 3]、var b = [1, true, [1,2], {x:1,y:2}, "OK"]、a[1]=a[0]+a[2])
函数:function sum(x,y) { return x + y; };var sum = new Function("x", "y", "return x+y;");;var sum = function(x,y) { return x+y; };var total = sum(1,2);。
空值和未定义值:null表示空值;undefined表示未定义值;两者“==”结果为true,但“===”结果为false。
操作符:与java基本相同,.、[]、()、new、++、--、-、+、~、!、delete、typeof、void、*、/、%、<<、>>、>>>、<、<=、>、>=、instanceof、in、==、!=、===、!==、&、^、|、&&、||、?:、,、=、*=、+=、-=、等等。“==”表示松散相等,允许类型转换,比如3=="3"为真;“===”为严格相等,必须有相同类型且值相等。比较符作用在字符串上时基于字母序。“in”表示右边的对象是否继承或包含左边的对象。
语句:表达式;、{表达式1; 表达式2}、空语句;、label: statement;break [label]、case、continue [label]、default、do/while、for、for/in、function、if/else、return、switch、throw、try/catch/finally、var、while、with。
面向对象:
function Point(x,y) { //constructor
this.x = x;
this.y = y;
this.f = function() { return x + y; }
}
Point.static_member = 5; // 静态变量
Point.static_function = function { return static_member; } // 静态方法
正则表达式:支持的特殊字符有:[...]、[^...]、\w、\W、\s、\S、\d、\D、?、+、*、{n}、{n,}、{n,m}、a|b、(sub)、(?:sub)、\n、$n、^、$、\b、\B、(?=p)、(?!p)。其中(?:sub)表示不存储匹配的值到变量;\n表示匹配第n组的子表达式;$n表示替换第n组的子表达式;(?=p)前瞻匹配;(?!p)前瞻否定匹配。