javaScript题点

1、数据类型:

  基础数据类型:Number(数字),String(字符串),Boolean(布尔值),Null(空),Undefined(未赋值),Symbol

  引用数据类型:Array(数组),Object(对象),Fuction(函数)

  Symbol:是ES6重新引入的新的原始数据类型,表示独一无二的值。

2、如下一段代码:

var a = [];
a[100] = 1;
console.log(a.length);
console.log(a[0]);
a[200] = undefined;
console.log(a.length);
console.lolg(a['100']);

输出的分别是什么?
分别:
  101
  undefined
  201
  1 

3、parseInt(1.9) ,parseInt(hellow)输出?

  输出:1 与 NAN

4、null和undefined的区别

null:表示空的值,它和0以及字符串""不同,0表述的是一个数值,""表示的是长度为零的字符串,而null表示“空”,

undefined:表示已定义,未赋值。

5、==和===的区别

  == 在比较的时候可以自动转换数据类型。

  === 严格比较,不会进行转换,要求进行比较的操作数必须保持一致,不一致的就返回false。

6、函数中this指向什么? call, apply, bind的用法和区别。

  this指代函数的运行环境,执行obj.fun()时,this指向的obj,直接执行fun()时,this指向全局环境。

  相同点:

  call apply bind 都可以改变函数的运行环境,即this的指向。

  第一个参数都是绑定的this

  不同点:

  call:第二个及以后传的都是参数

  apply:第二个参数传的时 数组

  bind:第二个参数及以后,传的时参数

   call和apply都是调用时函数立刻就执行,而bind调用后返回了绑定的this对象原函数,,bind比较适合将this绑定的函数传入到其他函数中去执行,特别是作为回调函数异步执行。

7、说说对 prototype和 __proto __ 的理解

  1、prototype 是函数才有的属性,prototype本身也是个函数对象;

  2、对象是由函数生成;

  3、生成对象时,对象的_proto_属性指向函数的prototype属性。

  _proto_是所有对象的都有的属性,_proto_指向构造它的对象的prototype。

  具体的解释引用:彻底理解JavaScript原型链(一)—__proto__的默认指向 - 简书 (jianshu.com)

8、说说ES6为什么要引入let关键字

  因为要解决var声明对象时产生的问题。

  var是数级作用域,let是块作用域。

  var存在变量提升,即变量可以在声明之前使用,值为undefind,而let声明的变量在声明变量之前使用是会抛出一个错误。

  另外let不可以重复声明变量

  ES6规定暂时行死区和let const语句不出现变量提升,只要是为了减少运行时的错误,防止在变量声明前使用这个变量,从而导致意料之外的使用。

9、使用构造函数实现一个类Foo,需要有属性 count, 方法bar(), 并且写出创建该类对象的方法

  functon Foo(){

    this.count = 0

  Foo.prototype.bar = function(){}

  var foo = new Foo();

  foo.far();

10、以下代码片段输出是什么,为什么?如果想输出0,1,2请问如何修改?

  

var s = [];
function foo() {
    for(var i=0; i<3; i++){
            s[i] = function(){
                  console.log(i);
            }
    }
}
foo();
s[0]();
s[1]();
s[2]();

  输出:3,3,3

  形成闭包的时候,变量是不同的时候,就能实现要求的函数:

  

var s = [];
function foo() {
    for(var i=0; i<3; i++){        
         s[i] = function(index){
              return function(){
                  document.write(index);
              }
         }(i);
        
    }
}
foo();
s[0]();
s[1]();
s[2]();

  

 
题目来源 :https://www.jianshu.com/p/17c5e91b0a87
posted @ 2022-03-20 21:56  jiaxin2015  阅读(48)  评论(0)    收藏  举报