Javascript开发之五ECMAScript语法基础
- 区分大小写。与Java一样,变量、函数名、运算符以及其他一切东西都是区分大小写的,也就是说,变量test不同于变量Test。
- 变量是弱类型的。与Java和C不同,ECMAScript中的变量无特定的类型,定义变量时只用var运算符,可以将它初始化为任意的值。这样可以随时改变变量所存数据的类型(尽管应该避免这样做,但作为Web开发,这确实可以提高效率)。
- 每行结尾的分号可有可无。Java、C#都要求每行代码以分号(;)结束才符合语法。ECMAScript则允许开发者自行决定是否以分号结束一行代码。如果没有分号,ECMAScript就把这行代码的结尾看作该语句的结尾(与Visual Basic和VBScript相似),前提是这样没有破坏代码的语义。最好的代码编写习惯是总加入分号,因为没有分号,有些浏览器就不能正确运行!
- 注释与Java、C#语言的注释相同。ECMAScript借用了这些语言的注释语法。有两种类型的注释——单行注释和多行注释。单行注释以双斜线(//)开头。多行注释以单斜线和星号(/*)开头,以星号加单斜线结尾(*/)。
- 括号表明代码块。从Java中借鉴的另一个概念是代码块。代码块表示一系列应该按顺序执行的语句,这些语句被封装在左括号({)和右括号(})之间。
-
- 第一个字符必须是字母、下划线(_)或美圆符号($)
- 余下的字符可以是下划线、美圆符号或任何字母或数字字符。
下面的变量名都是合法的:
var a; var $a; var $; var _a; var _; var a23;
基础数据类形是存在栈中的(number string undefiend null boolean)
引用值是在堆中(array 对象)对外提供一个指针指向存储对象的内存处。 在所有多语言中string是引用类型,因为它的长度是可变的,但在ECMA中打破这一规定。
前面我们提到了未定义值返回undefined,其实要注意的是:并不同于未定义的值:还有如下:
var a;
alert(a);//undefined
alert(typeof(a))//undefined
alert(typeof(a1))//undefined
alert(true==1); true alert(true===1); false(三个等号严格相等,不但值相等,类形也相等)String类型还包括几种字符字面量,Java、C和Perl的开发者应该对此非常熟悉。下表列出了ECMAScript的字符字面量:
字 面 量 含 义 \n 换行 \t 制表符 \b 空格 \r 回车 \f 换页符 \\ 反斜杠 \' 单引号 \" 双引号 \0nnn 八进制代码nnn(n是0到7中的一个八进制数字)表示的字符 \xnn 十六进制代码nn(n是0到F中的一个十六进制数字)表示的字符 \unnnn 十六进制代码nnnn(n是0到F中的一个十六进制数字)表示的Unicode字符
\n unix
\r mac os
\n\r windowsalert(parseInt("AB")); //NaN
alert(parseInt("AB",16));//171 这种方法有基模式,可以带两个参数,后一个参数就是进制数。
alert(parseInt("01212"));//650
alert(parseInt(0898));//898
alert(parseInt(12.10));//12
alert(parseInt("12120aa"));//12120
alert(parseInt("aa450"));//NaN
alert(parseInt(true));//NaNalert(parseFloat(120.12));//120
alert("AB".toString());//AB
类型转换的方法有很种如:强制转换
var s=1212;
alert(typeof s.toString()) ;// String
alert(typeof (s+"")); //String
alert(typeof String(s)) ;// String
alert(typeof (s*1));//number
Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。
parseInt() 和 parseFloat() 方法只转换第一个无效字符之前的字符串,因此 "1.2.3" 将分别被转换为 "1" 和 "1.2"。用 Number() 进行强制类型转换,"1.2.3" 将返回 NaN,因为整个字符串值不能转换成数字。如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法。
下表说明了对不同的值调用 Number() 方法会发生的情况:
| 用法 | 结果 |
|---|---|
| Number(false) | 0 |
| Number(true) | 1 |
| Number(undefined) | NaN |
| Number(null) | 0 |
| Number("1.2") | 1.2 |
| Number("12") | 12 |
| Number("1.2.3") | NaN |
| Number(new Object()) | NaN |
| Number(50) | 50 |
最后一种强制类型转换方法 String() 是最简单的,因为它可把任何值转换成字符串。要执行这种强制类型转换,只需要调用作为参数传递进来的值的 toString() 方法,即把 12 转换成 "12",把 true 转换成 "true",把 false 转换成 "false",以此类推。强制转换成字符串和调用 toString() 方法的唯一不同之处在于,对 null 和 undefined 值强制类型转换可以生成字符串.
引用类型
substring slice 两者其实一样,只是后者可以传入负数
var s="abcd1234";
alert(s.substring(1,1));b;
alert(s.slice(1,-1));//bcd123
String对象方法参考
| 方法 | 描述 |
|---|---|
| charAt() | 返回在指定位置的字符。 |
| charCodeAt() | 返回在指定的位置的字符的 Unicode 编码。 |
| concat() | 连接字符串。 |
| fromCharCode() | 从字符编码创建一个字符串。 |
| indexOf() | 检索字符串。 |
| lastIndexOf() | 从后向前搜索字符串。 |
| localeCompare() | 用本地特定的顺序来比较两个字符串。 |
| match() | 找到一个或多个正则表达式的匹配。 |
| replace() | 替换与正则表达式匹配的子串。 |
| search() | 检索与正则表达式相匹配的值。 |
| slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
| split() | 把字符串分割为字符串数组。 |
| substr() | 从起始索引号提取字符串中指定数目的字符。 |
| substring() | 提取字符串中两个指定的索引号之间的字符。 |
| toLocaleLowerCase() | 把字符串转换为小写。 |
| toLocaleUpperCase() | 把字符串转换为大写。 |
| toLowerCase() | 把字符串转换为小写。 |
| toUpperCase() | 把字符串转换为大写。 |
| toString() | 返回字符串。 |
| valueOf() | 返回某个字符串对象的原始值 |
var url = "http://www.g.cn/trend page"; alert(encodeURI(url));//该方法会将一些不能用在URI中的字符进行编码 //上面的空格将会被替换成%20,与之对应的decodeURI则是用来解码的 alert(decodeURI(encodeURI(url)));//原样输出
posted on 2012-11-13 14:01 peter.peng 阅读(276) 评论(0) 收藏 举报
浙公网安备 33010602011771号