Java学习从Java攀登网开始!

Java攀登网-专注Java知识分享

当前位置: Java攀登网 > 前端资料 > JavaScript >

JavaScript基础教程(三)

时间:2019-02-18 21:20来源:未知 作者:java攀登网 点击:
JavaScript基础教程(三)
JavaScript基础教程下载地址:https://pan.baidu.com/s/1MWTGBb3o4YxN7pIHlcR49w   

提取密码,关注公众号:springmeng,免费领取。
JavaScript基础教程(三)具体的如下所示:


数据类型

6大类

  • 对象
  • undefined
  • Boolean
  • String
  • number
(1)要是基础类型可以用typeOf()来判断
字符串方法charAt(),获取到字符串第几个charCodeAt()获取到UniCode编码。然后在计算。再利用fromCharCode()换算成字符
(2)要是引用类型可以用instanceOf Array;instanceOf Object 来判断
Number()方法能转化字符串数字,空,空数组,要是前面有0比如00100转化的结果就是100
parseInt()相当于把前面的数字部分转化为数字,后面的字符直接舍弃.他转化不了空,真要是转化空结果就是NaN
parseFloat()同上
isNaN()判断是不是NaN
作用域重点

  • 域:空间,范围,区域
  • 作用:读,写
(1)在JS找到变量前,他要做的就是先找到一些关键字 var function,参数然后在正是运行代码之前他把这些都提前付了一个值,undefined
遇到重名的只留一个
(2)逐行解读代码。每读一行就是到库里面去看看,要是有值就替换,改变表达式的值

alert(a); //弹出:function a(){alert(4);}
var a=1; //预解析中的a改为了1
alert(a);  //弹出1
function a(){alert(2);}//函数声明,没有改变a的值。什么也没发生。
alert(a); //继续弹出1,因为a在预处理库里面的值没有被改过。
var a=3; //预处理中a的值变为3
alert(a); //弹出3
function a(){alert(4);} //函数声明,什么也没有发生
alert(a); //继续弹出3
a(); //报错 a is not a function
第一步:
       预编译他会先找一些关键字存储到内存中。 比如var function 参数等等
       他找到var a 先看左边,不看右边.上来都给他一个未定义 var a = undefined;要是function他就直接替换了
       比如上面a从undefined直接变成了方法
       他根本不考虑后面的值
第二步:
        在一步步执行代码
        要是遇见表达式(表达式就是 var a = xxx)他才会重新替换或者赋值
函数的作用域要区分全局变量和局部变量
在方法内部写var的都是局部。在方法外面的都是全局变量。要是在方法里面不加var,那他改变的就是全局的值.
特别注意的就是在JS里面只有方法有作用域。for和if里面都没有作用域
真和假

  • 真:非0的数字,字符串,true,函数,object,[],{}都是真的
  • 假:就记住6个为假其余都真 0,NaN,空字符串,null,false,undefined
函数返回值return
这里特别注意下:

 fn1();
function fn1(){
    return function(){
        alert(1);
    }
}
返回的值就是function(){alert(1)}
 fn1()();
function fn1(){
    return function(){
        alert(1);
    }
}
返回的值就是1
arguments参数合集
arguments表示所有的参数合集

lert(sum(1,2,3));
function sum(){
    var n=0;
    for(var i=0; i<arguments.length; i++){
        n += arguments[i];
    }
    return n;
}
工具类
获取到样式

function getStyle(obj,attr)
{
  return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj)[attr]
}
兼容IE678 获取到样式合集.获取到元素的属性值
运动函数
//封装运动函数
    //既然是运动函数就需要传递几个条件(参数)
    // 1.对象(你得知道让谁动吧)
    // 2.方向(你得告诉他朝哪边走吧)
    // 3.速度 (你得告诉他一次走多少吧)
    // 4.终点(你得告诉他什么时候停止吧)
    // 5.回调函数(到达终点以后干点什么吧)
    function Imove(obj,attr,step,target,endfn)
    {
        //防止累加,越来越快。这样一上来我都从0开始计算
        clearTimeout(obj.timer);
        //主要是判断速度是正的还是负的,上来先比较。我的思路是要是目标的位置比初始的位置大,则速度肯定是正的,要是小则速度肯定是负的
        step =  target>parseInt(getStyle(obj,attr))? step:-step;
        obj.timer = setInterval(function(){
            var dis = parseInt(getStyle(obj,attr))+step;   //获取到每次走了之后距离最开始的位置
            //判断一下当走的距离要是超过了终点,则必须拉回来。要是没超过。则继续走.
            if(dis>=target&&step>0||dis<target&&step<0)
            {
                dis = target;
            }
            obj.style[attr] = dis+"px";   //给这个对象赋值,让他自己慢慢走。
            if(dis==target)               //当到达了终点了,就不让他走了。这个时候你需要清除定时器了。因为没用了。
            {
                clearInterval(obj.timer);   //清除定时器
                endfn&&endfn();           //执行回调方法
            }
        },100)
    }

 
(责任编辑:admin)
------分隔线----------------------------