js面试总结
css面试题:https://www.cnblogs.com/srqsl/p/17317496.html
html面试题:https://www.cnblogs.com/srqsl/p/17309191.html
基本的数据类型介绍,及值类型和引用类型的理解
在 JS 中共有 8 种基础的数据类型,分别为: Undefined 、 Null 、 Boolean 、 Number 、 String 、 Object 、 Symbol 、 BigInt 。
其中 Symbol 和 BigInt 是 ES6 新增的数据类型,可能会被单独问:
Symbol 代表独一无二的值,最大的用法是用来定义对象的唯一属性名。
BigInt 可以表示任意大小的整数。
这些数据可以分为原始数据类型和引用数据类型:
栈:原始数据类型(Undefined、Null、Boolean、Number、String)
堆:引用数据类型(对象、数组和函数)
Js判断数据类型检测的方式有哪些
typeof
其中数组、对象、null都会被判断为object,其他判断都正确,typeof返回的类型都是字符串形式
console.log(typeof undefined); // undefined
console.log(typeof 2); // number
console.log(typeof true); // boolean
console.log(typeof "str"); // string
console.log(typeof Symbol("foo")); // symbol
console.log(typeof 12343343n); // bigint
console.log(typeof function () {}); // function
//不能判别
console.log(typeof []); // object
console.log(typeof {}); // object
console.log(typeof null); // object
instanceof
能判断对象类型,不能判断基本数据类型,其内部运行机制是判断在其原型链中能否找到该类型的原型
const theString = 'String';
const newString = new String('这是 New 出来的 String');
console.log(theStrings instanceof String); // false,检查原型链会返回 undefined,同理用instanceof判断number依旧如此
console.log(newString instanceof String); // true
const theOjbect = {};
const newObject = new Object();
console.log(theOjbect instanceof Object); // true
console.log(newObject instanceof Object); // true
Object.prototype.toString.call()
所有原始数据类型都是能判断的,还有 Error 对象,Date 对象等。
Object.prototype.toString.call(2); // "[object Number]"
Object.prototype.toString.call("123"); // "[object String]"
Object.prototype.toString.call(true); // "[object Boolean]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
Object.prototype.toString.call(Math); // "[object Math]"
Object.prototype.toString.call({}); // "[object Object]"
Object.prototype.toString.call([]); // "[object Array]"
Object.prototype.toString.call(function () {}); // "[object Function]"
如何判断变量是否为数组
箭头函数和普通函数区别
1.语法不同:箭头函数使用箭头符号(=>)来定义函数,而普通函数使用关键字 function 来定义。
2.this的指向不同:箭头函数没有自己的 this,它会继承父级作用域中的 this 值。而普通函数中的 this 则是在函数被调用时动态确定的,它的值取决于调用函数的方式。
3.无法使用 arguments 对象:箭头函数没有自己的 arguments 对象,因此在箭头函数中使用 arguments 会引用外部作用域的 arguments。
4.不能用作构造函数:箭头函数不能使用 new 关键字来创建实例,因为它们没有自己的 this,也没有原型对象。
5.没有原型:箭头函数没有 prototype 属性,因此不能通过它来定义方法。
6.没有自己的 arguments, super, new.target 对象:箭头函数没有自己的 arguments, super, new.target 对象,它们都是从外部继承的。

浙公网安备 33010602011771号