zoukankan      html  css  js  c++  java
  • js基础知识


    1.i++与++i的区别
      i++返回的是自增之前的值,++i返回的则是自增后的值。
    2.闭包笔试题
      闭包特点:
        (1)嵌套函数;
        (2)内层函数使用外层函数的局部变量;;
        (3)外层函数将内层函数返回到外部,被全局变量保存住;
      闭包优点:
        (1)保护局部变量不受全局变量污染;
      
     
     function obj(){
        var arr=[];
             
    for(var i=0;i<3;i++){       arr.push(function(){return i})     }     return arr;   }
      //arr[function(){return i},
    function(){return i},function(){return i}]   

    var getObj=obj();   
    console.log(getObj[
    0]());   //3 
    console.log(getObj[
    1]());   //3
    console.log(getObj[
    2]()); //3

    首先,上面函数是闭包结构,obj()函数中有两个变量,分别是arr和 i ,由于arr并未在内部函数中使用,所以变量arr不是受保护的局部变量,那么只有 i 是受保护的局部变量;

    当for循环执行完成之后,变量 i 最终为3,所以再调用的时候返回3。

    3.一道面试题

    (function(){
        var a=b=10;
    })();
    console.log(typeof(b!=='undefined'));   //boolean
    console.log(typeof(a!=='undefined'));   //报错
    console.log(a);   //报错
    console.log(b);  //10
    console.log(typeof(b));    //number

    这道题中,b是一个全局变量(没有用var声明的变量均属于window);

    4.判断一个对象中是否包含某个属性的方法

       (1)hasOwnProperty() 方法; obj.hasOwnProperty('属性')

       (2)‘属性名’  in 对象 ;     if('属性'  in  obj){/doSomething/}

       (3)直接使用obj.属性名 ; if(obj.属性名===undefined){/doSomething/}

      比如:判断一个对象有无indexof属性

    var arr=[1,2,3,4,5];
    
    if(!arr.hasOwnProperty("indexof")){
    
      arr.indexof=function(keyword){
    
        for(var i=0;i<this.length;i++){
    
          if(arr[i]==keyword){
    
            return i;
          }
        }
        return -1;  
    
      }
    
    }
    
    document.write(arr.indexof('3'));

    5.trim()函数;

    trim()函数用于去除字符串两端的空白字符。该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止)。它会清除包括换行符、空格、制表符等常见的空白字符。如果参数str不是字符串类型,该函数将自动将其转为字符串(一般调用其toString()方法)。如果参数str为null或undefined,则返回空字符串("")。

     1 String.prototype.ltrim=function()
     2 {
     3      return this.replace(/(^s*)/g,"");
     4 }
     5 String.prototype.rtrim=function()
     6 {
     7      return this.replace(/(s*$)/g,"");
     8 }
     9 
    10 var str="   codePlayer       ";
    11 console.log(str.trim());//"codePlayer"
    12 console.log(str.ltrim());//"codePlayer     "
    13 console.log(str.rtrim());"    codePlayer"

    这里附上一个链接,绝对是深度好文,很详细,好东西要分享,嘿嘿  https://mp.weixin.qq.com/s/I7A1iC8Et6uOGZ234DsTlA










  • 相关阅读:
    uva 532 Dungeon Master
    hrbeu 哈工程 Tunnels
    poj 1088 滑雪
    hrbeu 哈工程 Eular Graph
    uva 567 Risk
    hrbeu 哈工程 Minimum time
    产品要不要做先回答的10个问题
    用icacls命令行给目录赋权
    SQL Server的FileStream和FileTable
    cygwin 离线安装包(包括vim,ssh,scp)
  • 原文地址:https://www.cnblogs.com/wj19940520/p/6511236.html
Copyright © 2011-2022 走看看