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中借鉴的另一个概念是代码块。代码块表示一系列应该按顺序执行的语句,这些语句被封装在左括号({)和右括号(})之间。
第一个字符必须是字母、下划线(_)或美圆符号($)
余下的字符可以是下划线、美圆符号或任何字母或数字字符。
下面的变量名都是合法的:
String类型还包括几种字符字面量,Java、C和Perl的开发者应该对此非常熟悉。下表列出了ECMAScript的字符字面量:
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() 方法会发生的情况:
最后一种强制类型转换方法 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对象方法参考
变量是弱类型的。与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 |
引用类型
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)));//原样输出
相关文章推荐
- JavaScript的基础语法与集成开发工具(IDE)
- JavaScript的基础语法与集成开发工具(IDE)
- javascript快速入门7--ECMAScript语法基础
- JavaScript 基础(4)ECMAScript(基础语法)——内置对象Array、String、Math、Date
- JavaScript 基础(1)ECMAScript(基础语法)——语法、数据类型、基本运算和逻辑运算
- Javascript基础知识篇(6): 高质量开发准则(上)
- JavaScript语法基础
- JavaScript入门<1>基础语法
- Javascript基础知识(一)核心基础语法与事件模型
- JavaScript-语法基础
- Drools规则工作流引擎全面开发教程(基础语法、性能调优、常用工具)
- javascript基础语法——表达式
- javascript 语法基础 想学习js的朋友可以看看
- JavaScript的语法要点 4 - 面向对象的基础
- 【JavaScript】02.基础语法学习
- javascript入门篇之基础语法
- JavaScript程序开发(六)—js语法
- JavaScript 面向对象开发知识基础总结
- JavaScript基础学习篇一——基础语法
- WEBBASIC Unit04&05 JavaScript 概述 、 JavaScript 基础语法 、 流程控制、 JavaScript对象概述 、 常用内置对象一 、 常用内置对象二 、 常用内置