【黑马程序员】8. JavaScript

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

一、        JavaScript简介

JavaScript是一种在浏览器端运行的语言,是一种前端语言,与后台无关。

JavaScriptJAVA没有直接的关系,唯一的关系是JavaScript原名为Live Script,后来吸收了JAVA的一些特性,升级为JavaScriptJavaScript有时被简称为JS

       JavaScript是解释型语言,无需编译就可以直接运行,这样哪怕程序中有的部分语法有错误,但没有语法错误的部分还是会正确执行的;JS是非常灵活的动态语言,不像C#等静态语言那样严谨。开发工具中的JS自动完成功能只是一个辅助,点出来的成员可能不能调用,而点不出来的成员或许还能调用,所以不能过于依赖开发工具。

       JavaScriptHTML一样,也可以用记事本等文本编辑器编写,不过由于效率问题和出现语法错误很难发现等原因,还是用Visual Studio进行开发更为高效。

二、        第一个JS程序

<head>
    <title></title>
    <script type="text/javascript">
        alert(newDate().toLocaleDateString());
    </script>
</head>
说明:上述代码实现的功能是,弹出一个消息框显示系统当前的日期。

alert 函数是弹出一个消息窗口,效果相当于WinForm中的MessageBox

new Date() 是创建一个Date类的对象,默认值就是当前日期。

JavaScript代码需要放在<script type="text/javascript"></script>标签中,<script>标签可以放在<head>、<body>等任意位置,一个HTML页中可以有不只一个<script>标签。放在<head>中的<script>,在<body>加载之前就已经运行完毕,而写在<body>中的<script>是随着页面的加载自上而下一个个执行的。

当然,JS除了可以直接写在HTML页中,还可以将JS写到一个单独的Jscript文件中,此文件是以.js为扩展名的,写入.js文件后,需要在HTML页中引用它,引用的方法见如下代码:

<script src="share.js" type="text/javascript">
</script>
其中,src属性指向的就是你的.js文件的文件名。引用Jscript文件的代码可以写在在<head>、<body>等任意位置。

三、        事件

事件(event)

用于描述发生了什么事情,用户的鼠标或键盘操作(点击,文字输入,下拉框的选中)以及其他的页面操作(页面的加载和卸载)都会触发相应的事件。

JavaScript中也有事件的概念,当按钮被点击时也可以执行JavaScript代码。

如:      

 <input type="button" value="点我" οnclick="alert('我是个Button')" />

当按钮被点击时执行控件的onclick属性所指向的代码。上述代码功能:当点击按钮时,弹出一个消息窗口显示“我是个Button”。

       在超链接<a>href属性中执行JavaScript代码的方法:

<a href="javascript:alert('我是超链接')">再点我</a>


如上代码中可以发现,在超链接的href属性中执行JavaScript程序时需要加上“javascript:”,这是因为在href中它并不是一个事件,而浏览器会把“javascript:”看成类似于“http://”、“ftp://”一样的网络协议把它交给JS解析引擎处理。

只有在“href”中执行JS程序时才需要加“javascript:”。

超链接中的点击事件和其它控件的差不多,都是放在onclick中的。

常用的事件类型:

OnClick 组件被点击

onDbClick 组件被双击

onLoad 页面加载

onUnload 页面卸载

onChange 组件内容发生变化或条目选中状态发生变化

onMouseMove 鼠标移动

onFocus 获得焦点

onBlur 失去焦点

四、        JavaScript变量

命名规则:

<1>必须以字母、下划线或美元符号开头,后面可以跟字母、下划线、美元符号、数字

<2>变量名要区分大小写

<3>不允许使用javascript关键字做变量名。

<4>使用var声明变量,变量声明时不指定具体数据类型,其具体数据类型由给其赋的值决定。也可以不经声明而直接使用变量,但必须先赋值再取值。

JavaScript中的字符串既可以用双引号也可以用单引号。

JavaScript中的nullundefined表示不同的意思,null表示变量的值为空,而undefined表示变量未指向任何对象,也就是没有初始化,表示“没有”。

JavaScript是一种弱类型的语言,不强调变量的类型具体是什么,在JS中声明变量用关键字var声明的变量可以重复赋值。如下代码在JS中是正确的:

var i=10;
i="abc";
alert(i);
也就是说变量i 可以指向任意类型的值。

五、        JavaScript函数的声明

JS中声明函数时不需要指定返回值类型和参数类型。函数声明以关键字function开头。      

<script type="text/javascript">
        //JS中声明一个函数,以function关键字开头,不需要指定返回值类型和参数类型
        function add(i1,i2) {  
            return i1+i2;
        }        
        alert(add(10,10));//调用函数
</script>
JS中并不要求所有的路径都要有返回值。

如果函数中有返回值那么就返回该返回值;否则就返回“undefined”。

 

JS中的匿名函数:类似于C#中的匿名函数,先声明一个匿名函数,然后用一个委托指向这个匿名函数,就可以把这个委托当作匿名函数来用了,在JS中也是相同的原理。

             

//JS中声明一个匿名函数,定义一个委托变量f1来指向这个匿名函数
        var f1=function (i1,i2) {
            return i1+i2;
        };
        alert(f1(5,5));//通过委托来调用匿名函数 

//声明一个匿名函数,立即使用
        alert(function (i1,i2) { returni1+i2}(5,10)); 
六、        JavaScript面向对象基础

JavaScript中没有类的概念,而是用函数闭包(closure)来模拟类的实现C#中的stringDate等类,在JavaScript中都被叫做“对象”。

<script type="text/javascript">
        function Person(name,age) {
        this.Name=name;//动态添加属性
         this.Age=age;
        this.SayHello=function () { alert("你好,"+this.Name) };//匿名函数
        }
       var p1=newPerson("jack",30);//new一个Person“类”的对象
        p1.SayHello();
</script>
function Person(name,age)可以看作是声明构造函数,NameAge这些属性也是动态添加的。

七、        Array对象

JS中的Array对象就是数组,它是一个动态数组,而且是一个像C#中的数组、ArrayList、Hashtable等的超强综合体。

数组是多个相同类型数据的组合,实现对数据的统一管理。

Javascript 数组的声明方式:

var a = new Array();

var b = new Array(size);

var c = new Array(v1,v2,v3, …);

var d = [ 1,2,3,4...];

Javascript 数组长度可变,数组对象的length 属性表明了该数组的长度。

数组元素访问格式:数组名[元素下标]

有效元素下标的范围:0~length-1;

Shift:删除数组的第一项,并返回删除元素的值;如果数组为空则返回undefined

Unshift:将元素添加到数组的开关,并返回数组的长度。

Pop:删除数组的最后一项的值,如果数组为空则返回undefined

Push:将数组添加到另一个数组的尾部,并返回数组的长度。

Concat:返回一个新的数组,将数组添加到原数组中。

Reversse:数组反转a.reverse()

Sort:数组排序。

Slice(start,end):截取数组元素。

Join(separator):将数组的元素以separator为分隔符组成新的字符串,separator默认是以逗号分隔。

        var arr=newArray();
        arr[0] ="tom";//添加数组元素
         arr[1] ="jack";
        arr[2] ="john";
        //遍历数组中的元素
         for (var i=0; i<arr.length; i++) {
            alert(arr[i]);       //打印的是数组的 Value
        }
       //数组的简化声明方式:
        var m= [5,6,7,8];
       //JS中的for循环可以像C#中的foreach一样用
        for (var einm) {
             alert(e); //打印的是数组的 Key
       }

Array当作字典来用:

            //声明一个Array对象用作Dictionary并进行初始化
              var dict= { "tom":30,"jack":28,"Mecheal":35 };
            alert(dict["Mecheal"]);

普通数组可以看做是Dictionary的特例,也就是Key为已知的0,1,2,3,4…...。

 

 

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值