JavaScript与java的区别
- java和JavaScript完全是两个不同的产品,java是面向对象程序设计语言,而JavaScript是一种可以嵌入web页面中的解释性语言
- java是面向对象的程序设计语言,即使是开发简单的程序,也必须从类定义开始;JavaScript是基于对象的,本身提供了非常丰富的内部对象供设计人员使用
- 两种语言的执行方式完全不一样
- 两种语言的变量声明也不一样
- 代码格式不一样
数据类型和变量
定义变量的方式
JavaScript是弱类型脚本语言,使用变量之前,可以无需定义,想使用某个变量时直接使用即可,所以JavaScript支持两种方式来引入变量:
- 隐式定义:直接给变量赋值
- 显式定义:使用var关键字定义变量
<script type="text/javascript">
// 隐式定义变量a
a = "Hello JavaScript";
alert(a);
</script>
<script type="text/javascript">
// 显式定义变量a
var a;
a = "Hello JavaScript";
alert(a);
</script>
JavaScript中的变量是区分大小写的,JavaScript允许一次定义多个变量
var a, b, c;
也可以在定义变量时为变量指定初始值
var i, j = 0, k = 0;
类型转换
JavaScript支持自动类型转换,这种类型转换的功能非常强大,自动类型转换虽然方便,但程序可读性非常差
JavaScript提供了几个函数来执行强制类型转换:
- toString(): 将布尔值、数值等转换成字符串
- parseInt(): 将字符串、布尔值等转换成整数
- parseFloat(): 将字符串、布尔值等转换成浮点数
当使用parseInt()或parseFloat()时,结果如下: - 字符串值:如果字符串是一个数值字符串,则可以转换成一个数值,否则将转换成NaN。
- undefined、null、布尔值及其他对象:一律转换成NaN
当使用toString()将各种类型的值向字符串转换时,结果全是object
变量
变量是程序设计语言里最重要、最基本的概念
JavaScript中的变量可以一会儿存储数值一会儿存储字符串;
变量根据作用范围分为全局变量和局部变量:直接定义的变量是全局变量,全局变量可以被全部的脚本访问;在函数里定义的是局部变量,局部变量只在函数内有效。若局部变量与全局变量使用相同的变量名,则局部变量将覆盖全局变量。
JavaScript变量没有块范围,所以会出现以下情况:
<script type="text/javascript">
//定义全局变量
var scope = "全局变量";
function test () {
document.writeln(scope + "<br />");
var scope = "局部变量";
document.writeln(scope + "<br />");
}
test();
</script>
第一次输出的scope值是undefined,而不是“全局变量”,这是因为变量scope在test()函数中已经被覆盖,局部变量在整个test()函数内都是有效的,但此处scope还没被赋值,所以输出undefined
基本数据类型
JavaScript的基本数据类型有:
- 数值类型:整数和浮点数
- 布尔类型:只有true和false两个值
- 字符串类型:字符串变量必须用引号括起来,可以是单引号也可以是双引号
- undefined类型:专门用来确定一个已经常见但没有初值的变量
- null类型:用于表明某个变量值为空
数值类型
JavaScript的数值类型包括所有整型变量和浮点型变量,支持科学记数法:<num1>e<num2>
注意:数值直接量不要以0开头。JavaScript不仅支持十进制,还支持其他进制,八进制以0开头,十六进制以0x或者0X开头
当数值变量的值超出了其表数范围时,将出现两个特殊数值:Infinity(正无穷大)和 -Infinity(负无穷大)
Infinity、-Infinity与其他数值进行算术运算时,整个算术表达式将变成另一个特殊值:NaN。但Infinity和-Infinity可以执行比较运算:两个Infinity总是相等的,两个-infinity也总是相等的
JavaScript中的算术运算允许除数为0(除数和被除数也可以同时为0,得到结果为NaN),正数除以0的结果是Infinity,负数除以0的结果是-Infinity。
NaN是另一个特殊数值,它是Not a Number三个单词的首字母,表示非数,NaN不会与任何数值变量相等,NaN == NaN返回false,判断一个变量是否为NaN,JavaScript提供了isNaN()函数来判断。
字符串类型
JavaScript的字符串必须用引号括起来,可以是单引号也可以是双引号。JavaScript中比较两个字符串是否相等,使用==即可。
JavaScript以String内建类来表示字符串,String类里包含了 一系列方法操作字符串:
- String(): 类似于面向对象语言中的构造器,使用该方法可以构造一个字符串
- charAt(): 获取字符串特定所引处的字符
- charCodeAt(): 返回字符串中特定索引处的字符所对应的Unicode值
- length(): 属性,直接返回字符串长度。JavaScript中的中文字符算一个字符
- toUpperCase(): 将字符串的所有字母转换为大写字母
- toLowerCase(): 将字符串的所有字母转换为小写字母
- fromCharCode(): 静态方法,直接通过String类调用该方法,将一系列Unicode值转换成字符串
- indexOf(): 返回字符串中特定字符串第一次出现的位置
- lastIndex(): 返回字符串中特定字符串最后一次出现的位置
- substring(): 返回字符串中的某个子串
- slice(): 返回字符串的某个子串,功能比substring更强大,支持负参数
- match(): 使用正则表达式搜索目标子字符串
- search(): 使用正则表达式搜索目标子字符串
- concat(): 用于将多个字符串拼接成一个字符串
- split(): 将某个字符串分割成多个字符串,可以指定分隔符
- replace(): 将字符串中某个子串以特定字符串代替
indexOf()与lastIndexOf()
- indexOf(目标字符串 [, 开始搜索的位置]):搜索目标字符串第一次出现的位置
- lastIndexOf(目标字符串 [, 开始的位置]):搜索目标字符串最后一次出现的位置
<script type="text/javascript">
var a = "hellojavascript";
var b = a.indexOf("llo");// b = 2
var c = a.indexOf("llo",3); // c = -1
var d = a.lastIndexOf("a"); // d = 8
alert(b + "\n" + c + "\n" + d);
</script>