JavaScript部分问题

JavaScript中的相等判断

话题: JavaScript 难度: ⭐

JavaScript中的相等判断有严格判断和带隐式转换的判断两种:

  • 严格判断(strict comparision): 比如===,比较的时候不会隐式转换类型;
  • 抽象判断(abstract comparasion):比如==,比较的时候会隐式转换类型。
var a = "42";
var b = 42;

a == b;         // true
a === b;        // false
复制代码

一些简单的规则:

  • 如果两边都是布尔类型的值,使用===;
  • 如果两边是0,"",[],使用===;
  • 所有其它类型,使用==是安全的。而且在很多情况下会简化代码、增加可读性。

请解释Null和Undefined

话题: JavaScript 难度: ⭐⭐

JavaScript和TypeScript有两个最基本的类型nullundefined。它们的含义是不同的:

  • 如果还没有被初始化,则是undefined;
  • 如果不可用,则可以用null来表示;

请解释JavaScript中的值和类型

话题: JavaScript 难度: ⭐⭐

下面是JavaScript内置的可用类型:

  • string
  • number
  • boolean
  • null和undefined
  • object
  • symbol (ES6的新语法)

如果比较JavaScript中的两个对象?

话题: JavaScript 难度: ⭐⭐

两个非基本类型的值,比如对象(包括函数和数组)都是通过引用的形式来访问。如果直接通过=====来判断,那么只会简单的判断其引用地址是否相同,而不是它们实际对应的值。

如果数组和字符串做比较,那么数组会通过逗号拼接转换为字符串。通过等号判断的时候,两个相同的数组不会相等,但是和相同数据的字符串比较反而相等。

var a = [1,2,3];
var b = [1,2,3];
var c = "1,2,3";

a == c;     // true
b == c;     // true
a == b;     // false
复制代码

如果要深度比较,可以使用第三方库,比如deep-equal或则你自己实现一个比较算法。

请解释undefinednot defined的区别

话题: JavaScript 难度: ⭐⭐⭐

在JavaScript中,如果你尝试使用不存在的还未申明的变量,JavaScript会抛出错误var name is not defined。但是如果你用typeof来查看其类型,会返回undefined

我们先来澄清一下声明和定义的区别:var x是一个声明,因为你并没有定义其具体的值,你只是声明其存在性。

var x; // declaring x
console.log(x); //output: undefined
复制代码

var x = 1同时兼具声明和定义,我们也可以叫它初始化。在JavaScript中,每一个变量和函数声明都会被提升到顶部。

如果我们访问一个声明了但是未定义的变量,会返回undefined

var x; // Declaration
if(typeof x === 'undefined') // Will return true
复制代码

访问一个未声明未定义的变量,会返回not defined错误。

console.log(y);  // Output: ReferenceError: y is not defined

参考自https://juejin.im/post/5bd95d22e51d45685f442f73

猜你喜欢

转载自blog.csdn.net/weixin_38383877/article/details/83591044
今日推荐