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

Javascript开发之五ECMAScript语法基础

2012-11-13 14:01 316 查看
区分大小写。与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)));//原样输出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: