js中的全局变量

很多人都觉得在javascript声明一个变量,加var和不加var没有什么区别,实际上是一个错误的观点,如果在函数外面,也就是说在window区域加不加var确实是一样,因为都会是全局变量的效果,而如果在函数内部,加var就是局部变量,不加是全局变量。


1.函数

function start(route) {
    
    //创建函数,但是没有执行
    function onRequest(request, response) {
        //console.log(request.url);
        pathname = url.parse(request.url).pathname;
        console.log("pathr:" + pathname);
        route(pathname);
        response.writeHead(200, { "Content-Type": "text/plain" });
        response.write("Hello World");
        response.end();
    }
    
    //创建有名函数,立即执行
    (function fnThree() {
        console.log("this is a function")
    })();
    
    //匿名函数
    var fnTwo = function () {
        console.log("this is two")
    };
    
    //执行匿名函数
    fnTwo();
        
    http.createServer(onRequest).listen(80);
    console.log("Server has started.");
}

2.with语句

有了 With 语句,在存取对象属性和方法时就不用重复指定参考对象,在 With 语句块中,凡是 JavaScript 不识别的属性和方法都和该语句块指定的对象有关。With 语句的语法格式如下所示:
      With Object {
      Statements
      }
      对象指明了当语句组中对象缺省时的参考对象,这里我们用较为熟悉的 Document 对象对 With 语句举例。例如 当使用与 Document 对象有关的 write( )或 writeln( )方法时,往往使用如下形式:
      document.writeln(”Hello!“)
      如果需要显示大量数据时,就会多次使用同样的 document.writeln()语句,这时就可以像下面的程序那样,把所有以 Document 对象为参考对象的语句放到With 语句块中,从而达到减少语句量的目的。

3.ajax添加header

var setting = {url: "http://apis.baidu.com/apistore/weatherservice/citylist",
  data: {"cityname":"上海"},
  type: "GET",
  dataType: "json",
headers:{"apikey" : "b403fd8ef2efa76bf49be1c600ceb8f2"},
  success: function(msg) {
alert(JSON.stringify(msg.retData))
   },    
  error: function(er) {  
alert("error")
   }
  };
$.ajax(setting);

4.实现页面跳转

5.JS冒泡

http://blog.sina.com.cn/s/blog_a322154901015qkk.html


6.jQuery中的.bind()、.live()和.delegate()之间区别分析

http://www.jb51.net/article/27309.htm

jquery 1.4之后不支持live()


7.页面之间参数传递

通过url参数传递

在页面1中书写跳转事件函数:

function goTestHtml(){         
    strApiTestUrl = "/api_test?" + "url=" + strUrl + "&" +"method=" + strMethod;
    location.href = strApiTestUrl
    }

在页面2中使用函数

//获取url中的参数获取参数值
function getUrlParam(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
            var r = window.location.search.substr(1).match(reg);  //匹配目标参数
            if (r != null) return unescape(r[2]); return null; //返回参数值
        }

8.根据时间字符串初始化Date(),求时间差,比较时间大小

var objBegin = new Date($scope.beginTime);
var objEnd = new Date($scope.endTime);if ((objEnd - objBegin) <= 0)
{
    swal("开始时间不能大于结束时间!");
    return;
}
var iTimeSpan = parseInt((objEnd - objBegin)/1000/60/60); //小时


9.if(!document.getelement) 检测是否支持getElement 不支持肯定也就不支持getElementById


10. 取整数 a = -5669.6 | 0

11.注入标签元素

function fn(){
 var btn1 = document.getElementById("btn1");
 newBtn = document.createElement("button");
 var div = document.getElementById("div");
 newBtn.innerHTML = "newBtn"
 //div.appendChild(newBtn);
 btn1.parentNode.insertBefore(newBtn, btn1);            }


12.注入JS

function fn(){
 //异步加载的,所以要在On里面处理下
 var temp = document.createElement('script');
     temp.setAttribute('type', 'text/javascript');
     temp.src = "js/inject.js"; //另外一个js
     
     temp.onload = function()
     {
         // 放在页面不好看,执行完后移除掉
         testIn();
         //this.parentNode.removeChild(this);
     };
     document.head.appendChild(temp);     }

JS中动态创建元素的三种方法: http://www.jb51.net/article/95200.htm?&_=1527315299176

13.jquery操作对象数组元素的方法

可以用jquery的eq()方法来选择,错误方式:不能用[]方式取jquery对象数组