标签:应用 信息 window rand index port 改名 自动调用 运行
第一题
<script> var a = 10; function test() { a = 100; console.log(a); //100 console.log(this.a) //10 var a; console.log(a) //100 } test() // 解题思路 : 变量提升 函数调用模式的this指向window </script>
第二题
<script> for(var i=1; i<10; i++){ setTimeout(function(){ console.log(i) },1000) } // 输出9遍 10
for(let i=1; i<10; i++){ setTimeout(function(){ console.log(i) },1000) } // 输出 1,2,3,4,5,6,7,8,9 </script>
第三题
<script> // 输出结果? var arr = [1,3,4,5,65,6] arr.forEach( i=>{ console.log(i); if(i==5){ return } }) // 输出结果 1,3,4,5,65,6 </script>
第四题
第五题
<script> // 已知有以下数组,请将数组随机乱序 let arr = [1,2,3,4,5] // 方法一 let newArr=[] for(let i = 0; i < Infinity; i++){ if(newArr.length==5){// 如果 newArr 和 arr原始数组的长度一样,跳出循环 break } let index = Math.floor( Math.random() * arr.length ) //随机获取数组下标 newArr.push(arr[index]) // 将随机出来的元素添加到newArr中 arr.splice(index,1) //删除添加过的元素 } console.log(newArr) </script>
<script> // 已知有以下数组,请将数组随机乱序 let arr = [1,2,3,4,5] // 方法二 let newArr=[] for(let i = 0; i < arr.length; i++){ let index = Math.floor( Math.random() * arr.length ) //随机获取数组下标 newArr.push(arr[index]) // 将随机出来的元素添加到newArr中 arr.splice(index,1) //删除添加过的元素 } var result = new Set( [ ...arr , ...newArr ] ) console.log([...result]) </script>
第六题
npm init 和 npm install vue 区别? 如何安装指定版本的js模块? npm init 是初始化项目,使用后会多出一个 package.json 的文件 npm install vue 是安装vue 使用 @ 可以指定版本 比如: npm i jquery@3.0.0 全局安装? npm install xxx -g //模块将被下载安装到【全局目录】中 本地安装? npm install xxx //则是将模块下载到当前命令行所在目录 信息写入?(安装的同时,将信息写入package.json中项目路径中) npm install xxx --save npm install xxx --save-dev --save 将依赖包名称添加到 package.json 文件 dependencies 键下 (发布后依赖的东西) --save-dev 则添加到 package.json 文件 devDependencies 键下 (开房时候依赖的东西) --save 是你发布之后还依赖的东西 --save-dev 是你开发时候依赖的东西
第七题
如何实现单页面同时适应 pc 和 移动端设备 ?
@media 媒体查询 /* 当屏幕小于等于100px的时候背景色为红色 */ @media screen and (max-width: 100px) { .example {background: red;} } /* 当屏幕在 200px -- 300px 的时候背景色为绿色 */ @media screen and (min-width: 200px) and (max-width: 300px) { .example {background: green;} } 或者使用bootstrap中的媒体查询
第八题
vue中如何防止卡白屏?
原因? vue项目完成后一打包,js都放到了一起,由于js太庞大,加载变慢出现白屏(app.js太大)
解决?
当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。
使用路由懒加载,可以将js分别打包到不同的文件中。
使用骨架屏(vant)
01 配置打包工具,将组件分别打包到不同的js代码块中
biuld/weabpack.base.conf.js
output:{
chunkFilename:"[ ]" //为了懒加载新增,配置后webpack将打包出多个js文件
}
02 当路由请求到该组件时,才动态加载组件的内容
引入组件时要改为
import index from ‘./‘xxx 改为 const index=()=>import (‘./xxx‘) 仅定义函数 不执行
当用户在vue中请求当前组件对应的路由地址时,由vue-router自动调用加载函数
第九题
简单描述一下前端优化的理解?
css放顶部,js放底部
精灵图,字体图标
压缩代码
前端你的优化在于减少DOM的操作和减少页面的重排重绘
第十题
call和apply的区别是什么?哪个性能更好一点?
call传参是一个一个传入 fn.call( obj , 10,20,30)
apply传参要用数组的形式[ ] fn.apply( obj , [10,20,30] )
传参多的时候,call的性能要比apply稍好些。所以call的性能要优于apply,所以在开发时候,使用call,如果传入的参数是数组,可以使用...展开用算符传参 fn.call( obj , ...arry )
第十一题
代码性能测试 console.time(‘a‘) console.timeEnd(‘a‘)
<script> // 测试代码运行时间可以使用 console.time和console.timeEnd 来测试一段代码运行的时间 console.time(‘A‘) for( let i=1 ; i<100; i++){ } console.timeEnd(‘A‘) // 输出结果: A: 0.007080078125ms </script>
第十二题
实现 (5).add(3).minus(2) ,使其结果输出为6
<script> /* arr.push() arr数组之所以可以调用数组方法, 是因为 arr是Array的实例,可以调用Array.prototype 原型上的方法。push就是Array的方法 jq源码中:给原型上添加方法 [‘add‘,‘minus‘].forEach( elem=>{ Number.prototype[elem] = eval(elem) }) */ // 5 + 3 - 2 = 6 // 实现 (5).add(3).minus(2) ,使其结果输出为6 (function(){ function check(n) { n = Number(n) return isNaN(n) ? 0 : n ; // 如果是NAN返回0 否则返回n } // 每一个方法执行完,都要返回Number这个类的实例,这样才可以继续调用Number类原型中的方法(链式写法) function add(n=0){ n = check(n) return this + n; //this指向5 ; } function minus(n=0){ n = check(n) return this - n; } Number.prototype.add=add; //将add函数添加到原型中 Number.prototype.minus=minus;//将minus函数添加到原型中 }()); console.log( (5).add(3).minus(2) ) // 6 </script>
十三题
什么是回调函数:把一个函数B作为实参传递给另外一个函数A;函数A在执行的时候,可以把传递进来的函数B去执行(执行N次数)
function each(arr,callBack) { for( let i= 0; i < arr.length; i++){ let item = arr[i]; index = i; callBack( item , index ) } } each( [1,2,3,4], function( item, index) { } )
十四题
箭头函数和普通函数的区别是什么? 构造函数可以使用new生成实例,那么箭头函数可以吗?为什么? 箭头函数和普通函数的区别? 01 箭头函数语法上比普通函数更简洁 02 箭头函数没有自己的this,它里面的this继承函数所处上下文中的this(箭头函数中的this与外层函数的this一致) 箭头函数中的this,使用call/apply等任何方式都无法改变this的指向(都和外层函数this一致) 03 箭头函数中没有 arguments(类数组) 04 箭头函数不能被new执行(普通函数 可以写成构造函数格式),为什么?因为箭头函数中没有this,箭头函数没有prototype 箭头函数时没有this,也没有prototype,也没有arguments
十五题
标签:应用 信息 window rand index port 改名 自动调用 运行
原文地址:https://www.cnblogs.com/javascript9527/p/11484093.html