Javascript基础知识学习(一)

在学习网页制作知识中涉及到的JavaScript相关的一些知识理论进行整理学习,涉及内容大约为:变量与声明,逻辑运算以及数组,函数,自定义类,事件机制,window对象。具体内容请参阅全文。

##Js的概念和声明:

由于网页的发展历程中,发现网页不能对用户的数据进行自动校验,和
提供一些特效,造成用户体验极差。于是引入了JavaScript这一概念。用来解决:

让网页和用户之间进行直接简单的交互.
给网页制作特效和动画

使用:

声明子啊Js代码域中:

1.在head标签中使用script声明js代码域
<head>
    ....
<!--声明js代码域-->
<script type="text/javascript">
    function test(){
        alert("哈哈,js学习起来很简单!!!");
    }
    </script>
</head>

2.在head标签中使用script引入外部声明的js文件
<head>
    ....
<!--声明js代码域-->
<!--引入外部声明好的js文件-->
    <script src="js/my.js"
        type="text/javascript" charset="utf-8"></script>
</head>

##js的变量学习:

1 js的变量声明
    使用var关键字进行变量声明,格式如下:
    var 变量名=初始值;
    例如: var a="呵呵";
2 js变量的特点
    a、 变量声明只有var关键字,声明的变量可以存储任意类型的数据。
    b、 js中的代码可以不适用分号结尾,但是为了提升代码的阅读性,建议使用分号。
    c、js中的变量允许出现同名变量,但是后面的会将前面的覆盖。
    d、声明不赋值,默认值是undefined
3 js的数据类型
    使用换件typeof判断变量的数据类型
    number:数值类型
    string:字符类型,注意:在js中字符可以使用单引号也可以使用双引号
    boolean:布尔类型
    object:对象类型
4 js的变量强转
    使用Number()函数:将其他数据类型转换为数值类型,转换失败返回NaN(not a number)
    使用Boolean()函数:将其他数据类型转换为布尔类型,有值返回true,无值返回false;
5 特殊的值
    null object
    undefined undefined
    NaN number
作用:
    变量是用来存储数据的,方便程序进行操作.

##js的运算符和逻辑结构:

作用:
    结合变量进行数据处理
使用:
    算术运算符:+,-,*,/,%
    关系运算符:>,>=,<,<=,!=
    等值符:==
    如果类型一致则直接比较值
    如果类型不一致则先使用Number强转为同一类型后再比较值
    等同符:===
    先判断类型,如果类型一致则再比较内容如果类型不一致则直接fasle
逻辑运算符:
    && || !
逻辑结构:
    if(){}else if(){} else{}
    switch(){}
    for(){}
    while(){}
    do{}while()
注意:
    判断条件可以直接是变量。
注意:
    js中变量是没有类型的,但是数据是有类型的,在进行数据处理的时候要注意数据的类型。

##js的数组学习:

问题:
    使用变量存储数据,如果数据量比较大的时候,会造成需要声明
    大量的变量去存储数据,代码整洁度及阅读性极差,数据的完整性得不到保证。
解决:
    使用数组
作用:
    存储数据
使用:
    js的数组的声明
    var arr1=new Array();//声明一个空数组
    var arr2=new Array(长度)//声明指定长度的数组。
    var arr3=[]//声明一个空数组,也可以在声明时直接
赋值:
    例如:var arr3=["a","b","c"];
js数组的使用
    数组的赋值
    数组名[角标]=值;
注意:
    js中赋值可以跳跃角标赋值,不存在的角标
    也可以赋值,会对数组的大小进行改变。
数组的取值:
    var 变量名=数组名[角标名]
注意:
    如果获取的角标没有数据,则返回undefined;
js的数组的特点
特点1:
    js中的数组可以存储任意类型的数据。
特点2:
    js的数组可以通过length属性动态的改变长度。
    可以增加,也可以缩短。
注意:
    如果是增加,则使用逗号进行占位
    如果是缩减则从后往前减少存储的数据。
js的数组的遍历:
    可以使用普通for循环
    也可以使用增强for循环
注意:
    增强for循环中,循环条件声明的变量记录的是角标。
js的数组的常用操作方法:
    数组名.pop()//移除并返回最后一个元素。
    数组名.push(要添加的数据)//在数组最后追加数据,并返回新的长度。
值得一提的是:
    由于在Js中使用同样变量var,因此在数组中可以存放任意类型的多种数据,这就是与其他语言不同的地方。

##js的函数学习:

问题:
    一般来说开发就是对现实生活中的问题使用代码进行解决,同类型的问题非常多,这样就需要每次都将代码重新声明一遍,造成代码过于冗余。
解决:
    因此基于以上问题,把代码封装成函数,不用重复声明,调用即可。
使用:
    函数的声明:
    第一种声明方式:
        function 函数名(形参1,形参2,...){函数体....}
    第二种声明方式:
        var 变量名=new Function("形参名1","形参名2",....,"函数体");
    注意:
        在js中函数是作为对象存在的。
    第三种声明方式:
        var 变量名=function()(形参1,形参2,...){函数体....}
    函数的形参:
        在js中函数的形参在调用的时候可以不赋值,不报错,但是默认为undefined
    在js中函数的形参在调用的时候可以不完全赋值,依次赋值。
    注意:
        js中没有函数重载,只有函数覆盖。
函数的返回值:
    在函数内部直接使用return语句返回即可,不需要返回值类型
    注意:
        默认返回undefined;
函数的调用:
    1、在加上代码域中直接调用(主要进行页面资源初始化)
    2、使用事件机制(主要实现和用户之间的互动)
    3、作为实参传递(主要是动态的调用函数)
    注意:
    小括号为函数的执行符,函数名()才会被执行,直接函数名则作为对象使用。
    注意:
        js的代码区域只有一个,包括引入的js代码,浏览器会将引入的js文件和内部声明的js代码解析成一个文件执行。
        js代码的调用和声明都在一个区域内。

##js的事件机制:

概念:
    基于监听的。一个动作会触发其他事物的执行。
作用:
    根据用户在网页中的不同操作触发执行对应的功能函数。
使用:
    单双击事件:
        单击事件 : onclick.
        双击事件: ondblclick
    鼠标移动事件:
        鼠标悬停事件:onmouseover 当鼠标在HTML元素之上时触发
        鼠标移出事件:onmouseout 当鼠标移出某个HTML元素时触发
    键盘事件:
        键盘下压事件:onkeydown 当键盘被按下时触发
        键盘弹起事件:onkeyup 当键盘弹起时触发焦点事件:
        获取焦点:onfocus 当获取焦点时触发
        失去焦点:onblur 当失去焦点时触发
    值改变事件:
        专门给select标签使用:
        onchange事件 当下拉框的值改变时触发
        页面加载事件:
        专门给body标签使用
        onload 当页面加载成功后触发
    注意:
        事件是作为HTML标签的属性来使用的。一个HTML元素可以同时使用多个事件,但是注意事件之间的相互干扰。

##Js的常用方法和对象学习:

String对象:操作字符的。
    使用:字符串.函数名即可
    大小写转换:
        toUpperCase() 转换大写
        toLowerCase() 转换小写
    字符串截取
        substr(0,1) 从指定开始位置截取指定长度的子字符串
        substring(0,1) 从指定位置开始到指定的结束位置的子字符串(含头不含尾)
    找字符位置
        indexOf 返回指定字符第一次出现的位置。
        lastIndexOf 返回指定字符最后一次出现的位置。
    其他还有很多类似的封装号的方法,必要时再去查阅相关API即可。
Date对象:
    使用: var 变量名=new Date();
    注意:
        获取的是客户端的时间,不能作为系统功能校验的时间的。
Math对象:
    使用:Math.函数名
    random()产生0-1之内的随机数,想要一定范围内的数时只需要乘以那个数即可。
    round()方法可把一个数字舍入为最接近的整数。例如Math.round(3.5),结果为4.且括号内必须是数字。
    ceil()对数进行上舍入。
    floor()对数进行下舍入。
    其他还有很多类似的封装号的方法,如同Java。必要时再去查阅相关API即可。
Global对象
    描述:
        全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。通过使用全局对象,可以访问所有其他所有预定义的对象、函数和属性。全局对象不是任何对象的属性,所以它没有名称。
    相关使用:
        eval(x)函数可计算某个字符串,并执行其中的的 JavaScript 代码。x必须为string类型数据。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。
        isNaN()检查某个值是否是数字。
        parseInt()解析一个字符串并返回一个整数。
        parseFloat()解析一个字符串并返回一个浮点数。

##window对象的属性学习

opener属性:
    它返回的是打开当前窗口的窗口对象.如果窗口A弹出一个窗口B,那么在B中window.opener就是窗口对象A.
location属性:
    作用:地址栏属性,该属性是一个对象,封存了浏览器对地址栏的操作信息
    例如:url
使用:
    URL操作:
    window.location.href//返回当前网页的URL信息
    window.location.href="资源路径"//跳转指定的URL资源。
页面刷新:
    作用:重新加载页面资源。
    window.location.reload();
history属性:
    forward()//前进,相当于浏览器中的前进功能
    back()//后退,相当于浏览器中的后退功能
    go()//跳转指定的历史记录
screen属性
    window.screen.width
    window.screen.height
    获取分辨率
再提一句:
    因为现在很多浏览器再带一些效果,所以即使一些内容我们设置成null值作为浏览器也会显示。
感谢您的鼓励.如果喜欢可以送我一包辣条。