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 />");

 }

posted @ 2015-09-11 15:59  孤鸿丿丿  阅读(42)  评论(0)    收藏  举报