您的位置:首页 > Web前端 > JavaScript

[JS] javascript基础语法

2017-05-08 11:03 387 查看
1.javascript是什么  js是具有面向对象能力的,解释性的程序设计语言. 2.js的类型  [基本类型]:string number boolean  [复合类型]:对象(对象,函数,数组)  [无类型]:null undefiend 3.typeof  语法:string typeof (变量名)  或者  string typeof 变量名  作用:返回这个变量的类型 4.块级作用域  js没有块级作用域的概念.if while等内声明的变量都是和外面声明的变量是同一作用域的. 5.运算符  ==和!=:是判断2个结果是否相等  in:属性是否属于某个对象  instanceof:变量是否属于某个类    add instanceof Function 6.数字类型  js中的数字类型都是浮点数.1===1.00  8进制:0开头  16进制:0x开头  7.NaN  Infinity  IsNaN  IsFinite  NaN:Not a Number    alert(0/0)  Infinity:无限的       alert(0.1/0)  boolean IsNaN(number):  判断不是数字  boolean IsFinite(number):  判断数字是不是有限的 8.string类型方法  string substring(startindex,endindex):左边取的到,右边取不到  string substr(startindex,length):  9.包装类型  包装类型和基本类型的用法一直,是对基本类型的扩充.  Number  String  Boolean 10.函数/匿名函数  函数是js的灵魂,匿名函数就是将函数赋给一个变量.  函数:function 函数名(参数){方法体}  匿名函数:var 变量名 = function(参数){方法体} 11.变量名提升/函数名提升  函数中是局部作用域,在局部作用域内使用var声明的变量都会隐式的前置.  如:  var i = 1;  function test(){    alert(i);    var i = 2;            //此处声明的i相当于在局部作用域最上面声明的.所以alert(i)的i为undefined.    alert(i);  }  var func = function(){return 1};  function test(){    func();    var func = function(){return 2};  //此处和上例相同,因为是函数调用的原因.此处会直接报错.执行不下去.    func();  } 12.动态函数  new Function(arg1,arg2...argN,body):会创建一个函数并返回. 13.arguments  函数的内部会有一个默认的arguments对象,不是数组.  typeof arguments = Object. arguments instanceof Array = false 14.创建对象  在js中没有类的概念,但是函数可以作为构造函数来使用.对象实际就是键值对.  var Person = function(){    this.ID = 1;    this.Name = '2';  }  var p1 = new Person();      //创建了一个Person对象,有属性ID和Name  原理:    new 关键字:创建一个object对象.将函数内的this指向这个对象.    构造函数:执行构造函数为this扩展成员.执行完返回this对象. 15.对象的字面值  var o = {    Id:1    ,Name:'2'  }  可以随意的添加成员o.Age = 3;删除成员:delete o.Age;调用成员o['Age'](); 16.数组的创建   2种方式创建:  var arr = new Array()  var arr = []  一般给数组赋值都是:  arr[arr.length] = value;   17.null undefined  null表示空,没有引用对象.  undefined表示未定义,不存在.有3种情况:    a.未定义的属性    b.未定义的变量    c.返回只有return  18.Error  相当于C#中的Exception对象  在js中 throw new Error('此处有错误');  常用:throw {msg:'异常',date:new Date()} 19.常用函数  编码函数:    encodeURI:对字符串编码,让中文可以再网络中正常传输        推荐使用    decodeURI:对字符串解码.                     推荐使用    escape:编码  unescape:解码    编码成16进制. 20.扩展方法  扩展方法的本质就是继承.  构造函数都有prototype(原型)属性.通过构造函数new的对象实际都是派生自prototype.  注意:所有的函数都继承自Function.间接继承Object.  Function.prototype.say = function(){                    //给所有函数扩展了一个say方法.    alert('每个函数都能调用');                        //函数都派生自Function的prototype属性  }  var func = function(){}; func.say();  21.继承                              重点  (var obj = new Object();  var str = new String();  var func = new Function();      所以Object,String,Function都为构造函数.)  //继承方式1:  Object.prototype.jc = function(objBase){    var F = function(){};    F.prototype = objBase;    return new F();  }   //继承方式2:  Object.prototype.jc = function(objBase){    this.prototype = objBase;  }  var F = function(){};  F.jc(objBase);  var func = new F();   //继承方式3:(多继承)  Object.prototype.jc = function () {
    var arr = arguments;
    for (var i = 0; i < arr.length; i++) {
      for (var k in arr[i]) {
        this.prototype[k] = arr[i][k];
      }
    }
  };  var F = function(){};  F.jc({id:1},{age:2},{say:function(){    alert(this.id + ":"+ this.age);  }})  var fu = new F();  fu.say();   22.闭包  闭包就是 将高级作用域内的变量提供给低级作用域访问.  var P = function () {    var i = 1;    return function(){      alert(i);    }  };  var p = new P();  p();    最外面的p能调用P函数里面的i;  23.函数  函数在js中有4种身份  [函数]:var func = function(){};                              //函数与方法的区别主要在函数内this指的是什么.  [方法]:var o = {}; o.say = function(){};  [构造函数]:var P = function(){}; var o = new P();  [apply|call]:函数名.apply(对象,[参数数组])  函数名.call(对象,参数列表); 24.DOM  DOM操作就是js操作html标签.  DOM操作:    创建节点:Element document.createElement(tagName)    获得节点:        根据id,className,tagName  Element document.getElementByXX(XXValue)        获得子节点:            父节点.childNodes
            父节点.firstChild
            父节点.lastChild        获得兄弟节点:            当前节点.nextSibling    添加节点:        父节点.appendChild()    删除节点        父节点.removeChild()    设置节点属性        DOM.setAttribute('属性名','属性值')        DOM.getAttribute('属性名')        常用属性:nodeName(大写标签名),nodeType(1标签 2属性 3文本),nodeValue(文本节点的文本)    设置节点文本        元素节点.innerText        文本节点.nodeValue        input节点.value     DOM树:注意的是文本节点是一个单独的节点. 25.setTimeout,setInterval本质还是单线程的.js是以事件方式驱动的   26.js压缩:  方式一:  javascript compressor  在线压缩工具  地址:http://dean.edwards.name/packer/ 方式二:  JSA  压缩,混淆,分析的工具  下载地址: 方式三:  closure compiler 谷歌的js优化器.非常智能.  下载地址:  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  packer