【面试题】前端 js那些需要注意的小细节

简介: 【面试题】前端 js那些需要注意的小细节

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

箭头函数

//普通函数:
let add2 = function (x, y) {
            return x + y;
        }
//第一步:去掉function
let add2 =  (x, y) {
            return x + y;
        }
//第二步:在()和{}之间加上胖箭头=>
let add2 =  (x, y) =>{
            return x + y;
        }
//当只有一个参数时,()也可以省略
let add2 =  x =>{
            return x + x;
        }
//当函数只有返回值时,return和{} 也能去掉
let add2 =  x => x + x;
复制代码

this 是什么?

this是指 谁在调用函数 ,如果没有就是window

  • 任何函数本质上都是通过某一个对象来调用的 ,如果没有直接指定,就是window
  • 所有函数内部都有一个变量 this
  • 它的值是调用函数的当前对象
test():window
p.test() : p
new test() : 新建的对象
p.call(obj) : obj
复制代码
  1. 箭头函数在哪个作用域下声明,this就指向谁
  2. 箭头函数和普通函数的区别 this绑定
  3. 普通的function不会绑定this 在进入到普通函数之前,this指向Window,进入普通函数之后,this就会变成该函数的指向,
  4. 而箭头函数会绑定this,在进入到箭头函数之前,this指向Windows,进入之后,由于箭头函数会绑定this,所以这时候this还是指向window,
  5. 如果先进入普通函数再进入箭头函数,this就会从进入之前的指向window 变成该函数指向;

函数的protoype属性

每个函数都有一个prototype属性,它默认指向一个Object空对象(即称为:原型对象)这里 Object是一个函数 原型对象中有一个属性constructor,它指向函数对象 Date.prototype.constructor===Date

给原型对象添加属性(一般是方法

函数的所有实例对象自动拥有原型对象中的所有属性(方法) 添加Date.prototype.getSum=function(){}Date会有getSum这个方法

显式原型与隐式原型

  • 每个函数function 都有一个prototype属性,即显式原型(属性)
  • 每个实例对象 都有一个 __proto__,可称为隐式原型(属性)
  • 对象的隐式原型的值为其对应构造函数的显式原型的值 Fn.prototype===fn.__proto__ 都保存同一个对象的地址值 默认指向一个Object空对象,原型对象
  • 原型链就是找隐式原型属性__proto__
  • 原型链是用来查找对象属性的
  • 读取对象的属性值时:会自动到原型链中去查找
  • 设置对象属性值时:不会查找原型链,如果当前对象中没有该属性,会直接添加此属性并设置其值
  • 方法一般定义在原型中(__proto__),属性一般通过构造函数定义在对象本身上
  • 函数的显式原型指向的对象默认是空Object实例对象,(但Object不满足这句话)因为原型对象其实就是一个对象,当然可以说是Object实例
  • 所有函数都是Function的实例,(包括Function它自己)
Function.__proto__=== Function.prototype//  true
复制代码
  • Object的原型对象是原型链的尽头
Object.prototype.__proto__   //   null 
复制代码

变量声明提升

//在定义语句之前就能访问到
var a =3
function fn(){
  console.log(a)
    var a=4
}
fn()    //  undefined  
复制代码

因为变量会声明提升,在进入函数时,函数中var 的变量会最先声明,但是没有赋值,然后再执行输出,最后执行赋值,所以结果是未定义,找变量会先在函数里面找,就近原则

箭头函数和普通函数的区别

  1. 箭头不会绑定,普通函数会绑定(能绑定就是能改变)
  2. this指向不同
  3. 普通函数,谁调用这个函数,this指向谁
  4. 箭头函数,在哪里定义函数,this指向谁
  5. 箭头函数适合与this无关的回调,定时器,数组的回调
  6. 不适合与this有关的回调,事件回调,对象的方法

变量不是数据本身,它仅仅是存储数据的容器

let a = [0,1,2];
let b = a;
b[0] = 5;
console.log(a);//  [5, 1, 2]
复制代码

数组后面习惯性敲一个空格

// 获取用户输入的内容,并且输出到页面  1输入,2存储,3输出
let uname = prompt('请输入您的姓名:')
document.write(uname)
复制代码

js基本数据类型

  1. 数字类型
  2. 字符串类型
  3. boolean 布尔类型
  4. undefined 未定义类型 只声明,未赋值
  5. null 空类型

引用数据类型

  1. object 对象
  2. function 函数
  3. array 数组
  4. js 推荐使用单引号引起字符串 “” ‘’``

模板字符串 拼接字符串和变量 在反引号中可回车换行不报错

document.write('大家好,我叫’ + name + ',今年' + age + '岁')
复制代码

内容拼接变量时,用${}包住变量,整体用反引号引起

//也可以`${3.14 * r * r}`,一般不建议这样
document.write(`大家好,我叫${name},今年${age}岁`)
document.write()//能够识别html标签
console.log(typeof null) // object  null 就是将一个对象赋值给一个变量,只不过这个对象还没创建好,就先让null赋值给这个变量
复制代码

数据类型转换

隐式转换,系统内部自动转换

规则:

  1. +号两边只要有一个是字符串类型,都会把另外一个转换为字符串;
  2. 除了+以外的运算符,像- * / 等等,都换转换为数字类型

注意 : +号作为 正号,可以转化为Number 例: console.log(10 + +'10')// 20

显式转换

console.log(Number(‘10.01’)) // 10.01
console.log(parseInt(‘10.99’)) // 10  只保留整数,不四舍五入
console.log(parseFloat(‘10.99’)) // 10.99  转化为数字型,会保留小数
//parseInt 和 parseFloat 会先将 数据通过String 转换为字符串,再去截取
console.log(Number('true')) //  1
console.log(parseInt('true')) // NAN
console.log(Number(‘null’)) // 0
(Number(‘undefined’)) // NAN
console.log(parseInt(a,16)) // 将变量a 转换为16进制
复制代码

Number 与 parseFloat 区别

  • Number ('11.1abc') 只能放数字类型的字符串,其他的不行 否则输出NaN(NOT a Number) Number 会先去调用String()函数,再转换
  • parseInt('11.1abc') // 11.1 只会返回以数字开头的数字类型,如果parseInt('abc11.1abc')// NaN 经常用于过滤单位 parseInt('100px') // 100

表单取过来的值是字符串类型

  • return 只能返回一个值,如果要返回多个值,可以用数组将值存放,返回数组

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

相关文章
|
16天前
|
JSON JavaScript 前端开发
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
本文介绍了JSONP的工作原理及其在解决跨域请求中的应用。首先解释了同源策略的概念,然后通过多个示例详细阐述了JSONP如何通过动态解释服务端返回的JavaScript脚本来实现跨域数据交互。文章还探讨了使用jQuery的`$.ajax`方法封装JSONP请求的方式,并提供了具体的代码示例。最后,通过一个更复杂的示例展示了如何处理JSON格式的响应数据。
28 2
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
|
14天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
14天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
24 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
19天前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
28 1
|
20天前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
17 1
|
23天前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
60 1
|
23天前
|
前端开发 JavaScript UED
"前端小技巧大揭秘:JS如何将后台时间戳秒变亲切小时前、分钟前,让用户秒懂,提升互动体验!"
【10月更文挑战第23天】在Web开发中,将后台返回的时间戳转换为“小时前”、“分钟前”、“刚刚”等友好的时间描述是常见需求。本文介绍如何用JavaScript实现这一功能,通过计算当前时间和时间戳的差值,返回相应的描述,提升用户体验。
26 1
|
30天前
|
前端开发 JavaScript 安全
JavaScript前端开发技术
JavaScript(简称JS)是一种广泛使用的脚本语言,特别在前端开发领域,它几乎成为了网页开发的标配。从简单的表单验证到复杂的单页应用(SPA),JavaScript都扮演着不可或缺的角色。
20 3
|
1月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
143 0
|
6月前
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
103 5

热门文章

最新文章