A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 7小虾米7 中级黑马   /  2016-9-7 00:20  /  1440 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.

  1. var s = 'hello';
  2. s.pro = 'world';
  3. console.log(s.pro+s);
复制代码


答案是: undefinedhello(这儿主要是考察了js的基本功,也就是对象的赋值;很明显第一行声明了变量s只是一个字符串。所以s.pro是不成立的。)

2.

  1. var n = 10;
  2. n.pro = 10;
  3. console.log(n.pro+n);
复制代码


答案是NaN(这道题与上面一道是差不多的,不同的是数值加上一个undefined等于NaN)

3.

    var length = 10;
  
  1. function fn(){
  2.             console.log(this.length);
  3.     }

  4.     var obj = {
  5.             length: 5,
  6.             method: function(){
  7.                     fn();
  8.                     arguments[0]();
  9.                     console.log(this.length);
  10.             }
  11.     }

  12.     obj.method(fn,1);
复制代码


答案是10和2,5
解析:这道题主要考查的是对js中this指向的认识,(js中this的值取决于调用的模式),如题目 中所涉及到的方法调用模式,即当一个函数被保存为对象的一个属性时,我们称它为一个方法,当一个方法被调用时,this指向了该对象,如:
  1. var obj = {
  2.         value: 1,
  3.         getvalue: function(){
  4.                 console.log(this.value);
  5.         }
  6. }
复制代码


obj.getvalue(); //结果输出1,此时的this指向obj;
注意: 该模式中,this对象的绑定发生在方法被调用的时候。
所以,题目中fn()其实指向的是全局即window,而arguments[0]()指向的是arguments本身,这儿因为传入了两个参数,所以输出为2;
4.

   
  1. if('a' in window){
  2.         var a = 10;
  3.     }
  4.     console.log(a);
复制代码


答案是: 10
解析: 这道题主要考查的是声明提升(主要包括函数声明提升、变量声明提升)如上面题目所示,其实相当于
  1. var a;
  2. if('a' in window){
  3.         a = 10;
  4. }
复制代码

附加: 函数声明提升
  1. say();
  2. function say(){
  3.         console.log('hi');
  4. }
复制代码


尽管函数是在say()后面定义的但是仍然能够执行。
5. var s = ‘aaabcdddddcccbbbba’; 编写一个函数,列出s中出现的每一个字符串以及其出现的次数;

     
  1. var obj = {};
  2.       var letter;
  3.       var key,num;

  4.       for(var i = 0; i < s.length; i++){
  5.           letter = s[i];

  6.           if(!obj[letter]){
  7.               obj[letter] = 1;
  8.           }else{
  9.               obj[letter] ++;
  10.           }
  11.       }

  12.       for(k in obj){
  13.           num = obj[k];
  14.           key = k;
  15.           console.log(key+'出现了'+num+'次');
  16.       }
复制代码



解析: 上边也只是列举出了其中的一个解法,思路就是,遍历s字符串,通过letter变量将字符串中的每一项存放到obj对象中,如果已经存放有该变量,则将属性值加1,否则的话就给obj增加该属性名,并且赋值为1;

2 个回复

倒序浏览
好的  谢谢分享  学习了
回复 使用道具 举报
可以。。。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马