了解JavaScript从基础开始

了解JavaScript从基础开始

JavaScript语法

什么是脚本程序和JavaScript

 *什么是脚本程序
 <html>
 <script language="javascript">
    alert(new Date());
 </script>
 </html>

 *JavaScript简介
  前身叫作Livescript,是一种基于对象(Object)和事件驱动(Event Driver),并具有安全性能的脚本语言.
 *JavaScript与Java
  是两个公司开发的两个不同产品,作用与用途大不一样,但两者语法上有很多相似之处,JavaScript并不是
  Java的子集.
 *JavaScript,JScript与ECMAScript
 *脚本代码的位置
  我们可以把代码放到<script></script>标签之间:
  <script>
    var x=3;
  </script>
  <p>This is a HTML 段落</p>
  <script>
    alert(x);
  </script>
  也可以放在一个单独的文件中:
  <html>
  <script src="script.js" language="javascript">
 *将脚本程序代码作为属性值
  <a href="javascript:alert(new Data());">javascript</a>
  </html>
=======================================================================================
JavaScript的基本语法

 *JavaScript中的标识符
 标识符是指JavaScript中定义的符号,例如,变量名,函数名,数组名等.标识符可以由任意顺序的
 大小写字母,数字,下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是JavaScript
 中的保留关键字.
 合法的标识符举例: indentifler,username,user_name,_username,$username
 非法的标识符举例: int,98.3,Hello World
 *Java严格区分大小写
 computer和Computer是两个完全不同的标识符
 *JavaScript程序代码格式
 每条功能语句的最后必须用分号(;)结束,每个词之间用空格,制表符,换行符或大括号,小括号这样
 的分隔符隔开.
 *JavaScript程序的注释
 /*...*/中可以嵌套"//"注释,但不能嵌套"/"...."/".

================================================================================
基本数据类型与常量

 *正型常量
 十六进制以Ox或OX开头,例如:Ox8a.八进制必须以O开头,例如: 0123.十进制的第一位不能为0
 (数字0除外),例如: 123
 *字符常量
 12.32,123.42,5E7,4e5等.
 *布尔值
 true和false.
 *字符串常量
 例如: "a book of JavaScript",'abc',"a",""(空字符串) .
 特殊字符需要用反斜杠(\)来转意.
 例如: \r, \n, \t, \b, \', \\
 在JavaScript中一个连续的字符串不能分开在两行中来写.可以使用"+"号连起来.
 *null常量
 表示变量的值为空
 *undefined常量
 表示一个变量还没有被复值时的状态,或某个对象的属性不存在.

=========================================================================================
变量

 *定义一个变量,系统就会为之分配一块内存,程序可以用变量名来表示这块内存中的数据.
 *声明变量用var关键字
 例如: var x; (这个时候就是undifeined)
 *声明变量的同时为其赋值
 例如: var name="lisi";
 *对已赋值的变量赋于一个其他类型的数据
 例如: name=123;
 *不事先声明变量而直接使用
 例如: x=1234;

算术运算符

 *+ 加法运算符或正值运算符,例如, x+5, +6.
  它还能实现多个字符串的想加,也能将字符串与其他的数据类型连成一个新的字符串,条件
  条件是该表达式中至少有一个字符串,例如: "x"+123的结果为"x123".
 *- 减法运算符或负预算符,例如, 7-3, -8.
 ** 乘法运算符,例如, 3*7.
 */ 除法运算符,例如 9/4.
 *% 求模运算符(算术中的求余),例如, 5%2
 *++将变量值加1后再将结果赋给这个变量,分为两种,例如a++和++a
 *--用法与++预算符一样
 

赋值运算符
 
  赋值运算符的作用是将一个值赋给一个变量,最常用的是"=",还可以由"="运算符和其他的一些
  预算符组合成新的运算符,例如:
  "+=","-="等.

比较运算符

  *>大于
   当左边的操作数大于右边的操作数时,返回true.
  *<小与
  *=
  *<=
  *>=
  *==
  *!=
  注意: 不要把"=="写成"="

逻辑运算符
 
  *&&
  逻辑与,当左右两边的操作数都为true时,返回值为true,否则为false.
  *||
  逻辑或,当左右两边的操作数都为false时,返回值为false,否则为true.
  *!
  逻辑非,当操作数为ture的时,返回值为false,否则为true.

========================================================================
程序流程控制
 
 *顺序结构
 *if条件选择语句
 *switch选择语句
 *while循环语句
 *do while语句
 *for循环语句
 *break与continue语句

 if条件语句语法1:
 if(条件语句)
 {
   执行语句块
 }
 注意:if(x==null)或if(typeof(x)=="undefined")可以简写成if(!x)
 if条件语句语法2:
 if(条件语句)
 {
   执行语句块1
 }
 else
 {
   执行语句块2
 }
 变量=布尔表达式? 语句1 :语句2
 if条件语句语法3:
 if(条件语句)
 {
   执行语句块1
 }
 else if(条件语句2)
 {
   执行语句块2
 }
 ....
 else if(条件语句块n)
 {
   执行语句块n
 }
 else
 {
   执行语句块n+1
 }
 if语句块的嵌套
 if(x<1)
 {
  if(y==1)
    alert("x<1,y==1");
  else
    alert("x<1,y!=1");
  }
  else if(x>10)
  {
    if(y==1)
      alert("x>10,y==1);
    else
      alert("x>10,y!=1");  
  }

===================================================================
函数
 
 *函数的作用与定义
 *全局变量与局部变量
 *参数个数可变的函数
 *创建动态函数
 *JavaScript中的系统函数

  定义一个函数的语法如下:
  function 函数名 (参数列表)
  {
     程序代码
     return 表达式;
  }
  对函数调用的几种方式:
  1.函数名(传递函数的参数1,传递给函数的参数2,.....)
  2.变量=函数名(传递函数的参数1,传递给函数的参数2,.....)
  3.对于有返回值的函数调用,也可以在程序中直接使用返回结果,例如:
  alert("sum="+square(2,3));

  全局变量与局部变量,看下面的代码:
  <script language="javascript">
   var msg="全局变量";
   function show()
   {
      msg="局部变量";
   }
   show();
   alert(msg);
  </script>

  参数个数可变的的函数:
 <script language="javascript">
  function testparams()
  {
    var params="";
    for(var i=0;i<arguments.length;i++)
    {
      params +=" "+ arguments[i];
    }
    alert(params);
  }
    testparams("abc",123);
    testparams(123,456,"abc");
 </script>
  注意:arguments代表了传递给函数的所有参数的所有集合。当函数的个数不确定,
  获得参数个数很多,你又不想为每个参数定义一个变量,那么你就可以定义一个
  像上面那个一样的,定义一个为空的参数名,在内部用循环来实现。
 创建动态函数的语法:
 var varName=new Function(argument1,....,lastArgument);
 说明:
 所有的参数都必须是字符串型的,最后的参数必须是这个动态函数的功能程序代码.
 例子:
 <script>
   var square=new Function("x","y",
            "var sum;sum=x*x+y*y; return sum;");
   alert(square(3,2));
 </script>
 动态函数有什么作用,在什么情况下使用?
 
 JavaScript中的系统函数:
 .encodeURI方法(比URL的描述的范围更大,一般情况下可以等同)
 返回一个URI字符串编码后的效果。例如:
 <script language="javascript">
   var uriStr=encodeURI("http://www.doit.org/index.html?country=中国&name=z x");
   alert(uriStr);
 </script>

 .decodeURI方法
 将一个已编码的URI字符串解码成最初的字符串并返回.
 .parseInt方法
  第一字符串按指定的进制转换成一个整数,语法格式为:parseInt(numString,[redix])。
  如果没有指定第二个参数,则前缀为'Ox'的字符串被视为十六进制,前缀为'O'的字符串
  被视为八进制,所有其他的字符串被视为十进制。
  例如: alert(parseInt("123abc",10));
 .parseFloat方法
  将一个字符串转换为小数。
 .isNaN方法(用与检测)
 .escape方法(用于对文本的简单加密)
  返回对一个字符串进行编码后的结果字符串。所有空格,标点,重音符号以及任何其他
  ASCII字符都用%xx编码替换,其中xx等于表示该字符的Unicode编码的十六进制数,字符
  值大于255字符以%uxxxx格式表示。
 .unescape方法
  将一个用escape方法编码的字符串解码成原始字符串。
 .eval方法
  将其中的参数字符串作为一个JavaScript表达式执行。

=======================================================================
  对象
 *对象与对象实例
 *构造方法与this关键字的作用
 *在函数中修改参数值的问题

 对象与对象实例
 .对象中所包含的变量就是对象的属性,对象中所包含的对属性进行操作的函数就是对象的
  方法,对象的属性和方法都叫对象的成员。
 .对象是某一类事物的描述,是抽象的概念;而对象实例是一类事物中的具体个例。
 .能够被用来创建对象实例的函数就是对象的构造函数,只要定义一个对象的构造函数,就
  等于被定义了一个对象。使用new关键字和对象的构造函数就可以创建对象实例,语法格式
  如下: var ObjectInstance = new ObjName(传递给该对象的实际参数列表)。
  <script language="javascript">
  function Person()
  {
    //这是一个构造函数
  }
  var person1 = new Person();  //创建了一个实例变量(对象实例)
  person1.age = 18;
  person1.name = "blovesaga"; //age和name为对象属性
  //alert(person1.name+"."+person1.age);
  function sayFunc()
  {
    alert(person1.name+"."+person1.age);//我们也可以使用person["age"](对象实例["成员变量"])来访问
  }
  person1.say=sayFunc;  //把方法名赋值给了person1.say成员,我们可以在其他地方像
                        //调用方法一样来调用
  person1.say();
  </script>

看下面的例子:
<html>
 <script language="javascript">
   //定义一个构造函数,也就是对象的名称为person
   function Person()
   {
   }
   //创建一个对象实例
   var person1=new Person();
   person1.age=18;
   person1.name="zxy";
   //编写一个成员方法
   function sayFunc()
   {
      var x="name";
      eval("alert(person1."+ x + ");");  //这个字符串中的内容将被作为JavaScipt代码来执行
      alert(person1.name+":"+person1.age);
   }
   person1.say=sayFunc; //把方法名赋值给了person1.say成员
   person1.say=sayFunc(); //写了括号表示执行sayFunc()函数在复值
   person1.say();
 </script>
</html>

===================================================================
构造方法与this关键字

 .为一个对象实例新增加的属性和方法,不会增加到同一个对象所产生的其它对象实例上。
 .所有的实例对象在创建都会自动调用构造函数,在构造函数中增加的属性和方法会被
  增加到每个对象实例上。
 .对象实例是使用new关键字创建的,在构造方法中不要有返回结果的return语句。
 .调用对象的成员方法时,需要使用“对象实例.成员方法"的形式,很显然,用作成
  员方法的函数被调用,一定伴随有某个对象实例。this关键字代表某个成员方法执行时
   ,引用该方法的当前对象实例,所以,this关键字一般只在用作对象成员方法的
  函数中出现。
  <script language="javascript">
   function Person(name,age)
   {
     this.age=age;
     this.name=name;
     this.say=sayFunc;
   }
   function sayFunc()
   {
      alert(this.name+":"+this.age);
   }
   var person1=new Person("张山",18);
   person1.say();
   var person2 = new Person("里四",30);
   person2.say();
  </script>
例子代码:
<html>
 <script language="javascript">
   //定义一个构造函数
   function Person(name,age)
   {
     this.name=name;//当前的对象实例增加一个成员变量name,成员变量的通过Person()参数name传递进来
     this.age=age;//当前的对象实例增加一个成员变量age,成员变量的通过Person()参数age传递进来
     this.say=sayFunc; //增加一个sayFunc()函数
   }
   function sayFunc()
   {
     alert(this.name + ":" + this.age);
   }
   //创建一个对象实例
   var person1=new Person("张三",18);
   person1.say();  //调用person1的say()成员方法
   var person2=new Person("李四",29);
   person2.say();  //调用person2的say()成员方法
 </script>
</html>

=====================================================================
在函数中修改参数值的问题

 将基本数据类型的变量作为函数参数传递的情况:
 <script language="javascript">
  function changeValue(x)
  {
    x=5;
  }
  var x=3;
  changeValue(x);
  alert(x);
 </script>
注意: 在函数changeValue(x)中的x=5并不能修改主程序中的x值,函数接受的参数
就相当于一个局部变量,当函数调用完也就没用了。所以该程序的结果为x=3;如果
我们把一个对象的实例传递给函数,而我们有在函数中修改了对象实例的属性,那么
最后的结果也会变化的。

你可能感兴趣的:(了解JavaScript从基础开始)