【面试题】前端 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后端面试题库大全

相关文章
|
8月前
|
JavaScript 前端开发 API
|
8月前
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
297 8
|
8月前
|
JavaScript 前端开发 容器
|
8月前
|
JavaScript 前端开发
|
8月前
|
存储 JavaScript 前端开发
|
8月前
|
移动开发 JavaScript 前端开发
|
9月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
7767 23
|
8月前
|
存储 JavaScript 前端开发
|
8月前
|
JavaScript 前端开发
|
8月前
|
JavaScript 前端开发

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改