Javascript s01

 

 

1.什么是javascript

         基于事件和对象驱动的,并具有相对安全性能的客户端脚本语言

         脚本语言,这东西不需要编译,是解释执行的.

        

         兼容性问题

         GOOGLE Chrome    ->V8 引擎

         Microsoft IE9    ->Charkra

         Mozilla FireFox  ->SpoderMonkey

        

         2009年,Node.js ->服务端运行  基于V8引擎 代替php

        

2.如何在HTML中使用js?

         4种方式,使用js

         a.<script></script>

         b.<a href="javascript:alert('haha')">点我试试</a>      

         c.<div onclick="alert('不让你点')">不要乱点</div>

                   监听事件,基于事件触发

         d.<script src='01.js'></script>

            等于PHP中的include.外嵌内容就不要在中间写内容

            外部的扩展名是无所谓的.只要内容是JS

         e.JS的执行顺序

                   从上往下,跳过函数

         f.JS严格区分大小写(LINUX一样)

           HTML也不区分

           PHP函数不区分大小写,变量,常量等区分大小写

         j.调试JS代码

                   1.alter($user)                              //弹出来

                   2.doucument.write($user);   //php的echo

                   3.console.log($user);                //控制台输出

         h.JS中语法有错误时,浏览器会如何处理呢?      

                   一旦有错时,可能整个代码都没有效果

                   分段去缩小范围去排除错误

         i.规范      

                   必须写上<!DOCTYPE html>

         j.分号问题      

                   js中,一句代码结束后的分号,可以有,可以没有,默认以换行符作为语句的分割

                   推荐写上分号        

         k.直接量(常量)        可以在程序代码中直接使用的数据    

                   单引号和双引号一样,都不解析变量,但要注意嵌套关系,首选引号

        

         l.注释

         //单行

         /*  */多行

        

         m.标识符(给变量起名字)

                   字母,数字,下划线,$

        

         n.如何声明变量

                   直接使用标识符,作为变量名,但不能使用内部的关键字或保留字

                   var 变量名;

                   var 变量名=值;   //声明时同时赋值

                  

                   JS中,变量可以不声明,直接给变量赋值,会自动声明该变量

                   如果使用一个没有声明的变量,会出错

                  

                  

                   使用一个没有的属性的对象,会得到undefined,不会报错

        

3.保留字

         a.关键字   if else function return var this new

         b.当前版本不使用的,但以后可能用到的   class  const  enum  export  extends ...

         c.js早期版本,将JAVA中所有关键字都保留了.  abstract double ..

         d.js中预定义的全局变量和函数 Number Array Function NaN(not a number) ...

        

4.变量的作用域

         a.不在函数中声明的都叫全局变量

         全局变量可以在任何地方使用,包括在函数中,也可以使用(像PHP的超全局变量)

        

         b.在函数中声明的变量,是局部变量,只能在该函数及内部的函数中使用

         <?php

          $str="hahaha";

          

        

         function test(){

                   echo 'aaa';

                   echo   $GLOBALS['str'];

         }

        

         test();

         ?>

        

**  c.如果声明局部变量不加 VAR 那么变成全局的.就算在函数中声明,也是全局变量

                  

         d.每一个函数,都有自己的作用域,内部的函数,都能用他定义的变量

        

         e.如果可以不使用全局变量,就尽量不要用

        

5.变量声明提前

                   var num=5;

                   function test(){

                            //自动的隐示了 var num;

                            alter(num);  //变量的提前声明;undefined;

                            var num=6;

                            alter(num);  //6

                   }

                  

6.数据类型

                   6种

                   typeof 运算符(跟加号 减号一样)

                   基本(原始)数据类型

                            :string , number , boolean

                           

                   特殊(其他)数据类型

                            :function , undefined

                           

                            测试函数的时候  typeof 函数名(不加括号)

                            function test(){alter('aaaaa');}

                            alter(typeof test);  //function

                            var b=test;

                            alter(typeof b);   //函数

                  

                   对象(复合数据类型 )

                            :object

                   除了上面5种全是对象类型

                   null //null是一个特殊的值,是一种特殊的对象类型

                   alter(typeof []);数组在JS中也是一种特殊的对象

                  

                   null 和 undefined 的区别

                   1.null是关键字,是一个特殊对象类型的值,不是数据类型

                   2.undefinded是一种数据类型,表示更深层次的"空",表示变量或属性没有被初始化

                  

                   3.null和undefined都表示"值的空缺",很多时候可以相互转换,如果用==比较,是ture,

                   要用===才能区分

                   4.如果将它们转为boolean

                   alert(!!null)    alert(!!undefined);

                   5.都不包含属性或方法

                  

7.全局对象(global object)

         JS的最顶层是一个对象

         全局的函数和属性,都存在这个对象的中

         var name='admin';

         alter(this.name);

        

        

         全局对象中的方法或属性可以不写对象名,直接使用

        

         7.1 属性:

                   undefined

                   Infinity(无穷大)     alert(2/0);

                   -Infinity(负无穷大)  alert(-2/0);

                   NaN (Not a Num);

                   alter("张三" * "李四") //NaN

                  

         7.2 全局函数(方法):

                   a.isNaN();         is not a num 如果不是一个数,则返回ture

                   能认识用字符串表示的数 "1.5"  "1.2e3"

                  

                   b.parseInt("1.5rrrr")   //1   跟PHP差不多

                   可以将字符串或小数转为整数

                  

                   c.eval

                            eval("var a=5");   //直接把双引号去了.

                            var a=5

                            直接把代码给执行了

                            alert(a);

                  

                   d.escape() 用于编码或者转译

                  

                   var str="a#gf";

                   str=escape(str)

                  

                   document.write(<a href=16.php?w=" "></a>)

        

                   e.unescape

                  

         7.3 构造函数

                   可以new 一个构造函数生成一个对象

                   String()

                   <?php

         //常规使用类和对象,需要得到对象后,单独给不同的对象属性

        

         class Student{

                   public $name;

                  

                   //与类同名的是构造方法

                   public function Student(){

                            echo 'ha ha....';

                   }

                  

                   public function sayHi(){

                            echo '大家好,我是'.$this->name;

                   }

         }

        

         $obj=new student();

                  

                   Number()

                   Boolean()

                   Object()

                   Array()

                   Date()

                   RexExp()

                  

         7.4 预定义对象

                   Math

                   JSON

 

8.浏览器提供的全局对象  window对象

         在客户端JS中,浏览器提供一个Window对象代表全局对象

         用window对象,就等同于在用全局对象,也可以用this来指代

         加入了更多的属性和方法

         documont

         alter()        

         location

         setTimeout()

         document.all IE特有,其他游览器,没有.

        

        

为什么全局对象中的属性或方法可以直接使用,我们自己的对象或方法,是否可以这么做?

 

with的作用

        <script type="text/javascript">
  var obj=new Object();
  obj.name="张三";
  obj.age=18;
  
  with(obj){
   alert(name);
  
  }
  
  
 </script>

        

posted @ 2013-05-29 21:37  午时的海  阅读(230)  评论(2编辑  收藏  举报