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 windows




    alert(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));//NaN

    alert(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)    收藏  举报