JavaScript和Java的区别
一:javaScript的数据类型和变量声明
1.1 任何语言的数据类型
1.2 复习java的数据类型
1.3 对比java的数据类型和js的数据类型(声明 变量(全局,局部) )
1.4 js中定义变量的方式 (隐式调用和显示调用) a = "Hello JavaScript";
注意:js中的变量是区分大小写的 abc和ABC是两个不同的变量
js允许一次定义多个变量 var a , b, c;
1.5 类型转换(js在使用的过程中数据类型是可以随意改变的)
var a="3.145";
var b = a-2;
var c = a+2;
结果是?
b = 1.145;
c = 3.1452;
规律:对于减号运算符,因为字符串不支持减法运算,所以系统自动将字符串转换成数值
对于加号运算,因为字符串可用加号作为连接运算符,所以系统自动将数值转换成字符串,并将两个字符串进行连接运算。
问题 : 如果实现字符串和数值的算数加法运算呢?
js提供了了一下几个函数来执行强制类型转换
toString()
parseInt()
parseFloat()
isNaN()
eval()
var a = "eee";
如果我们用parseInt(a)会发生什么呢? 报错,eee不是整型
1.6 变量
1.6.1 全局变量
1.6.2 局部变量
1.6.3 变量的作用范围 ---->js中没有块的概念
1.7 js中基本数据类型有5个
数值型 包括整数和浮点数
布尔型 只有true和false
字符串类型 : 字符串变量必须用括号引起来,引号可以是单引号,也可以是双引号。
undefined类型 : 专门用来确定一个已经创建但是没有初值的变量
null类型: 用于表明某个变量的值为空
java中字符串和js中的字符串的区别:
js中的字符串可以用单引号引起来
js中比较两个字符串的字符序列是否相等使用==即可,无需使用equals()方法
js中提供字符串的操作方法,见API
1.8 js中的数组
和java的不同点:
js中的数组长度可变。数组长度总等于所有元素索引最大值+1.
同一个数组中的元素类型可以互不相同
访问数组元素师不会产生数组越界,访问并未复制的数组元素时,该元素的值为undefined
二:javaScript的运算符
赋值运算符
算数运算符 ++ --
比较运算符
逻辑运算符 && || !
三目运算符 (表达式)? if-true-statement : if-false-statement
三:javascript的语句形式
3.1 异常抛出语句:
throw new Error(errorString);
for(var i = 10;i<0;i++){
document.writenln(i+'<br />');
if(i>4){
throw new Error('用户定义异常');
}
}
3.2 异常捕获语句
try{
}catch(e){
statements
}finally{
}
归纳: js的异常机制与java异常机制存在如下区别
js只有一个异常类: Error, 无需在定义函数时声明抛出该异常,所以没有throws关键字
js是弱类型语言,所以catch语句后括号里的异常实例无需声明类型
js只有一个异常类,所以try块后最多只能有一个catch块
捕获异常的描述信息是通过异常对象的message属性,而不是通过getMessage()方法实现的。
六:javascript的流程控制
if(){}
if(){
}else{
}
if(){
}else if(){
}else if(){
}
else{
}
switch(expression){
}
while(){
}
do{
}while();
for(var i = 0;i<10;i++){
}
for in
for(index in object){
}
break
continue
四:javaScript的函数
因为js是弱类型的语言,所以定义函数时,既不需要声明函数返回值类型,也不需要声明函数的参数类型
js的2中定义函数的方式
function functionName(paramter-list){
}
var f = function(name){
doucument.writeln('你好'+name);
}
f('sss');
函数中可以有返回值,也可以没有,如果有,一旦遇到第一条return语句,函数就返回返回值,函数运行结束。
全局函数和局部函数
五:函数、方法、类、对象的关系
函数: 就像java中方法一样,这个函数可以被调用。
对象: 定义一个函数时,系统也会创建一个对象,该对象是Function类的实例
new 函数();
方法: 定义一个函数时,该函数通常会附加给某个对象,作为该对象额外方法。
类 : 在定义函数的同时,也得到了一个与函数同名的类。
5.1 函数不仅可作为函数调用
函数可本身也是一个对象
演示案例
<script type="text/javascript">
var hello = function(name){
return name+"您好";
}
alert(hello); //第一个问题,这里直接输出hello输出的是什么?
alert("hello是否为Function 对象: " + (hello instanceof Function));
alert("hello是否为Object 对象: " + (hello instanceof Object));
</script>
注:在js中函数就是一个对象,在我们定义一个js函数的同时,也得到了一个与该函数同名的类,该函数也是该类唯一的构造器
上面我们在第一个alert中调用“hello”打印出来的是源码
那么问题来了?我门如何调用hello这个函数呢?
1. 直接调用 alert(hello("js"));
2. 间接调用 var obj = new test('js'); 得到的是一个对象
function Person(name,age){ //Person函数默认附到一个Windows对象上
this.name = name;
this.age = age;
this.info = function(){ //定义了一个匿名函数附到一个Person对象上
document.write("我的名字是: " + this.name + "<br />");
document.write("我的年纪是: " + this.age + "<br />");
return "a";
};
}
<script src="Untitled-2.js" type="text/javascript">
</script>
<script type="text/javascript">
var p = new Person("js",15);
var infos = p.info();
alert(infos);
</script>
找错误:
错误分析:
函数中的变量有3种:
局部变量: 在函数中以普通的方式声明变量,包括以var或不加任何前缀生命的变量。
局部变量只能在函数里访问的变量
实例属性: 在函数中以this前缀修饰的变量
实例属性是属于单个对象的,因此必须通过对象来访问
类属性 : 在函数中以函数名前缀修饰的变量
类属性是属于整个类(也就是函数)本身的,因此必须通过类(也就是函数)来访问。
同一个类(也就是函数)只占一块内存,因此每个类属性将只占一块内存,同一个类(也就是函数)每创建一个对象,系统将会为该对象的实例
分配一块内存.
js是一种动态语言,他允许随时为对象增加属性和方法
例题:
function Student(grade,subject){
this.grade = grade;
Student.subject = subject;
}
<script type="text/javascript">
var s1 = new Student(5,"java");
s1.subject = "abc";
with(document){
writeln(s1.subject);
writeln(Student.subject);
}
</script>
函数的参数传递:
java的参数传递
js的值传递
JavaScript Document
function a(x){
x = 10;
document.write("函数执行中的arg1的值为:"+x+"</br>");
}
<script type="text/javascript" src="Untitled-2.js">
</script>
</head>
<script>
var x = 5;
document.write("函数调用之前x的值为:"+x+"<br />");
a(5);
document.write("函数调用之后x的值为:"+x+"<br />");
</script>
地址值传递:
<script>
var person = new person('js',13);
document.write("函数调用之前x的值为:"+person.name+"<br />");
changeName(person);
document.write("函数调用之后x的值为:"+person.name+"<br />");
</script>
function changeName(person){
person.name = 'jssssss';
document.write("函数执行中name的值为:"+person.name+"<br />");
}

浙公网安备 33010602011771号