web前端面试题总结笔记——JavaScript部分

js中的变量类型

值类型和引用类型

  • 值类型

    undefined

    string

    number

    boolean

  • 引用类型

    object:

    ​ {}

    ​ []

    ​ null

    ​ function

  • 强制类型转换

    字符串拼接

    ==运算符

    if语句

    逻辑运算符

    ​ 判断是否是true还是false: console.log(!!a);

     

     

     

===与== 强制类型转换

JS中的内置函数

JS变量按照存储方式分为哪些类型

理解json

window.onload和DOMContentloaded 浏览器渲染

作用域

JS模块化

JS的基础算法

作用域和闭包

​ 执行上下文

​ 自动会将函数声明 和函数表达式提前

​ this

​ 在执行时,才能确认值

​ 作用域

​ 作用域链

​ 闭包

变量提升

​ 函数和声明会提前

this的几种场景

​ 作为构造函数

​ 作为对象属性

​ 作为普通函数

​ call 直接用

​ apply 要用[] 数组方式

​ bind (.bind({y:100}))

创建10个a 分别点击 分别弹出序号

作用域

闭包

 

异步和单线程

同步和异步

setTimeout

前端使用异步的场景

  • ​ 在可能等待的情况需要异步

    • 不能像alert阻塞程序运行

    • 所以 等待的情况下 都需要异步

      定时任务:setTimeout setInterval

      网络请求:ajax请求,动态IMG的加载

            var xhr=XMLHttpRequest()
​
            xhr.open("get",url)
​
            xhr.send()
​
            xhr.onreadystatechange=function(){
    
                if(xhr.readystatechange==4&&xhr.status==200)
                    {
                        document.getElementById("myDiv").innerHTML=xhr.responseText;
                    }
            }
​

​ 事件绑定

日期

function foematDate(dt){
    if(!dt){
    dt=new Date()
}
    var year = dt.getFullYear()
    var month = dt.getMonth()+1
    var date = dt.getDate()
    if(month<10){
        month='0'+month
}
    if(date<10){
        date='0'+date
}
    return year+ '-' +month+'-'date //日期格式
}
var dt=new Date()
var formatDate = formatDate(dt)
console.log(formatDate)

Math

获取0-1之间的随机数Math.random()

var random=Math.random()
var random=random+'0000000000'
var random=random.slice(0,10)
console.log(random)

 

数组API

forEach:遍历所有元素

var arr = ['a','b','c','d']
arr.forEach(function(item,index){
    console.log(index,item)
})

 

function forEach(obj,fn)
{
    var kry
    if(obj instanceof Array)
    {
        obj.forEach(function(item,index)
        {
            fn(index,item)
        })
    }
    else
    {
        for(key in obj)
        {
            if (obj.hasOwnProperty(key))
            {
                fn(key,obj[key])
            }
        }
    }
}
var arr = [1,2,3,4]
forEach(arr,function(index,item)
{
    console.log(index,item)
})
var obj={x:100,y:200,z:300}
forEach(obj,function(key,val)
{
    console.log(key,val)
})

 

every:判断所有元素是否符合条件

var arr = [1,2,3,4]
var result=arr.every(function(item,index){
   if(item<5){
       return true
   }
})
console.log(result)

some判断至少一个元素符合条件

var arr = [1,2,3,4]
var result=arr.some(function(item,index){
   if(item<3){
       return true
   }
})
console.log(result)

sort

}):排序

var arr = [1,6,2,7,3,5,4]
var arr2=arr.sort(function(a,b){
       return a-b //从小到大排序 反之 大到小
})
console.log(arr2)

map:对元素重新组装

var arr = [1,2,3,4]
var arr2=arr.map(function(item,index){
       return '+item+'
})
console.log(arr2)

filter:过滤符合条件的元素

var arr = [1,2,3,4]
var arr2=arr.filter(function(item,index){
       if(item>2){
           return true
       }
})
console.log(arr2) 

for in

var obj = {
    x:100,
    y:200,
    z:300
}
var key
for (key in obj)
    if(obj.hasOwnProperty(key))
    {
        console.log(key,obj[key])
    }

你可能感兴趣的:(js,面试)