Leetcode
Leetcode copied to clipboard
🎲【每日更新 question & answers】一个 ☝️ 正经的前端学习,每天进步一点点!手写源码,api,算法;包含JavaScript / Vue / React / TypeScript /HTML / CSS / Nodejs / Leetcode……Suggest 👍
- encodeURI()函数用于对 URL 进行编码。此函数需要一个 URL 字符串作为参数并返回该编码字符串。 - decodeURI()函数用于解码 URL。此函数需要一个编码的 URL 字符串作为参数并返回该解码的字符串。 注意:如果要对字符进行编码,例如`/ ? : @ & = + $ #then` 您需要使用encodeURIComponent(). ## 复习 注意点:如果要将一个已经声明的变量用于解构赋值,必须非常小心。 ```js // 错误的写法 let x; {x}...
IIFE(立即调用函数表达式)是一个 JavaScript 函数,一旦定义就会运行。 ```js (function() { // })(); ``` 使用 IIFE 的主要原因是为了获得数据隐私,因为在 IIFE 中声明的任何变量都不能被外界访问。即,如果您尝试使用 IIFE 访问变量,则会引发如下错误 ```js (function () { var message = "IIFE"; console.log(message); })(); console.log(message); //Error: message is...
暂时性死区是 JavaScript 中的一种行为,当使用 let 和 const 关键字声明变量时发生,但不使用 var。在 ECMAScript 6 中,在声明之前(在其范围内)访问letor变量会导致 ReferenceError。 ```js function somemethod() { console.log(counter1); // undefined console.log(counter2); // ReferenceError var counter1 = 1; let counter2 = 2;...
原型链是用于在现有对象的基础上构建新类型的对象。它类似于基于类的语言中的继承。 对象实例的原型可以通过 Obeject.getPrototypeOf(object) 或 `__proto__` 属性获得,而构造函数的原型可通过 Object.prototype 获得。 构造函数,原型,实例的关系: 每个构造函数都有一个原型对象,原型有一个属性指回构造函数,而实例有一个内部指针指向原型。 原型链的基本思想:(如果原型是另一个类型的实例?)原型当成实例。 意味着这个原型本身有一个内部指针指向另一个原型,相应地另一个原型也有一个指针指向另一个构造函数。这样就在实例和原型之间构造了一条原型链。 ```js function SuperType() { this.property = true; } SuperType.prototype.getSuperValue = function() { return this.property; }; function SubType() {...
如果您尝试在 a 中重新声明变量,switch block则会导致错误,因为只有一个块。例如,下面的代码块会引发如下语法错误 ```js let counter = 1; switch (x) { case 0: let name; break; case 1: let name; // SyntaxError for redeclaration. break; } ``` 为避免此错误,您可以在 case...
let是早期编程语言(如Scheme和Basic)采用的数学语句。let它是从已经尽可能接近传统关键字的数十种其他语言中借用的var。 与let相关就说说const命令,是ES6新增的内容。 ## const命令 const声明一个只读的常量。一旦声明,常量的值就不能改变。 ```js const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable. ``` const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。 对于const来说,只声明不赋值,就会报错。 const的作用域与let命令相同:只在声明所在的块级作用域内有效。 ```js if (true) {...
1. var: 从JavaScript开始就可以使用;它具有功能范围;变量将被提升。 2. let: 作为ES6的一部分引入;它具有块范围;已提升但未初始化。 ```js function userDetails(username) { if (username) { console.log(salary); // undefined due to hoisting console.log(age); // ReferenceError: Cannot access 'age' before initialization let age =...
let 语句声明了一块范围的局部变量。因此,使用let关键字定义的变量的范围仅限于使用它的块,语句或 表达式。而使用var关键字声明的变量用于全局定义变量,或本地定义为整个函数,而不管块范围如何。 ```js let counter = 12; if (counter === 12) { let counter = 13; console.log(counter); // 13; } console.log(counter); // 12 ``` ## let ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 ```js {...
纯函数是一个函数,其中返回值仅由其参数确定,没有任何副作用。即,如果您在应用程序中调用具有相同参数“n”次和“n”个位置的函数,那么它将始终返回相同的值。 我们举个例子来看看纯函数和非纯函数的区别 ```js //Impure let numberArray = []; const impureAddNumber = (number) => numberArray.push(number); //Pure const pureAddNumber = (number) => (argNumberArray) => argNumberArray.concat([number]); //Display the results console.log(impureAddNumber(6)); // returns 1...
柯里化是将具有多个参数的函数转换为一系列函数的过程,每个函数只有一个参数。**Currying** 以数学家**Haskell Curry**的名字命名。通过应用柯里化,n 元函数将其转换为一元函数。 让我们举一个 n 元函数的例子,以及它是如何变成柯里化函数的, ```js const multiArgFunction = (a, b, c) => a + b + c; console.log(multiArgFunction(1, 2, 3)); // 6 const curryUnaryFunction = (a) =>...