Запишите его, вы можете использовать его позже.
оригинал:блог Просто scrambler.com/12-extreme…
видел онлайн.
1)
использовать!!
преобразовать переменную в логический тип
Иногда нам нужно проверить, существует ли какая-либо переменная или имеет ли она действительное значение, таким образом, рассматривая их значение какtrue
. Для выполнения такой проверки вы можете использовать!!
(оператор двойного отрицания), который автоматически преобразует любой тип данных в логическое значение, возвращаются только эти переменныеfalse:0,null,"",undefined或NaN
, все остальное возвращаетсяtrue
. Давайте посмотрим на этот простой пример:
function
Account(cash) {
this.cash = cash;
this.hasMoney =
!!cash;
}
var account = new
Account(100.50);
console.log(account.cash); //
100.50
console.log(account.hasMoney); // true
var emptyAccount = new
Account(0);
console.log(emptyAccount.cash); //
0
console.log(emptyAccount.hasMoney); //
false
В этом примере, еслиaccount.cash
больше нуля, тоaccount.hasMoney
Значениеtrue
.
2) использовать+
преобразовать переменную в число
Это преобразование очень простое, но оно работает только для строк чисел, в противном случае возвращаетсяNaN
(не числа). Посмотрите этот пример:
function
toNumber(strNumber) {
return
+strNumber;
}
console.log(toNumber("1234")); //
1234
console.log(toNumber("ACB")); //
NaN
Это преобразование также может работать наDate
, в этом случае он вернет метку времени:
console.log(+new Date()) //
1461288164385
3) Состояние короткого замыкания
Если вы видели такой код:
if (conected) {
login();
}
то вы можете использовать между этими двумя переменными&&
(оператор И), чтобы сократить код. Например, предыдущий код можно сократить до одной строки:
conected
&& login();
Вы также можете использовать этот метод, чтобы проверить, существуют ли в объекте определенные свойства или функции. Аналогично следующему коду:
user
&& user.login();
4)
использовать||
установить значение по умолчанию
В ES6 есть эта функция параметров по умолчанию. Чтобы эмулировать эту функцию в старых браузерах, вы можете использовать||
(оператор ИЛИ) со значением по умолчанию в качестве второго аргумента. если первый аргумент возвращаетfalse
, то второй параметр будет возвращен как значение по умолчанию. Взгляните на этот пример:
function
User(name, age) {
this.name = name || "Oliver Queen";
this.age =
age || 27;
}
var user1 = new User();
console.log(user1.name); //
Oliver Queen
console.log(user1.age); // 27
var user2 = new
User("Barry Allen", 25);
console.log(user2.name); // Barry
Allen
console.log(user2.age); // 25
5)
кэш в циклеarray.length
Этот прием очень прост и позволяет избежать сильного падения производительности при циклическом обходе больших массивов. В основном почти все используют for для перебора такого массива:
for
(var i = 0; i < array.length; i++) {
console.log(array);
}
Если вы используете меньшие массивы, это нормально, но если вы имеете дело с большими массивами, этот код будет пересчитывать размер массива в каждом цикле, что приведет к некоторой задержке. Чтобы избежать этого, вы можете кэшировать в переменнойarray.length
, чтобы кеш использовался каждый раз в цикле вместоarray.length
:
var
length = array.length;
for (var i = 0; i < length; i++) {
console.log(array);
}
Если быть более кратким, это можно записать так:
for (var i = 0, length =
array.length; i < length; i++) {
console.log(array);
}
6)
Обнаружение свойств в объектах
Этот трюк полезен, когда вам нужно проверить наличие определенных свойств и избежать запуска не определенных функций или свойств. Вы также можете использовать эту технику, если планируете писать кроссбраузерный код. Например, допустим, вам нужно написать код, который работает со старыми версиями Интернета.
Код, совместимый с Explorer 6, и хотите использоватьdocument.querySelector()
чтобы получить какой-то элемент по ID.
Однако в современных браузерах этой функции нет. Итак, чтобы проверить, существует ли эта функция, вы можете использоватьin
оператор. Взгляните на этот пример:
if ('querySelector'
in document) {
document.querySelector("#id");
} else {
document.getElementById("id");
}
В этом случае, если вdocument
Нет вquerySelector
функция, она будет использоватьdocument.getElementById()
в качестве замены.
7)
Получить последний элемент массиваArray.prototype.slice(begin,end)
Может использоваться для обрезки массивов. Но если конечный параметр не установленend
значение, функция автоматическиend
Установите значение длины массива. Думаю, мало кто знает, что эта функция может принимать отрицательные значения, если поставитьbegin
Установив отрицательное число, вы можете получить обратный элемент из массива:
var
array = [1, 2, 3, 4, 5, 6];
console.log(array.slice(-1)); //
[6]
console.log(array.slice(-2)); //
[5,6]
console.log(array.slice(-3)); // [4,5,6]
8)
усечение массива
Этот метод блокирует размер массива, что полезно для удаления фиксированного количества элементов из массива. Например, если у вас есть массив из 10 элементов, но вы хотите получить только первые пять элементов, вы можете сделать это, установивarray.length
= 5
Подходит к эстрадному массиву. Взгляните на этот пример:
var array = [1, 2, 3, 4, 5,
6];
console.log(array.length); // 6
array.length =
3;
console.log(array.length); // 3
console.log(array); //
[1,2,3]
9)
заменить всеString.replace()
разрешено использовать функциюString
иRegex
Для замены строк сама функция может заменить только первую совпадающую строку. Но вы можете добавить в конце регулярного выражения/g
имитироватьreplaceAll()
функция:
var
string = "john john";
console.log(string.replace(/hn/, "ana")); // "joana
john"
console.log(string.replace(/hn/g, "ana")); // "joana joana"
10)
Объединить массивы
Если вам нужно объединить два массива, вы можете использоватьArray.concat()
функция:
var array1 = [1, 2,
3];
var array2 = [4, 5, 6];
console.log(array1.concat(array2)); //
[1,2,3,4,5,6];
Однако эта функция не подходит для больших массивов, поскольку она создаст новый массив и займет много памяти. В этом случае вы можете использоватьArray.push.apply(arr1,arr2)
, он не создает новый массив, а объединяет второй массив с первым, чтобы уменьшить использование памяти:
var
array1 = [1, 2, 3];
var array2 = [4, 5,
6];
console.log(array1.push.apply(array1, array2)); //
[1,2,3,4,5,6];
11)
ПучокNodeList
преобразовать в массив
если работаетdocument.querySelectorAll("p")
функция, которая возвращаетDOM
массив элементов, т.е.NodeList
объект. Но у этого объекта нет некоторых функций, принадлежащих массиву, например:sort(),reduce(),map(),filter()
. Чтобы включить эти функции и другие встроенные функции массивов, вам необходимо преобразовать NodeList в массив. Чтобы преобразовать, просто используйте эту функцию:[]
.slice.call(elements)
:
var elements = document.querySelectorAll("p"); //
NodeList
var arrayElements = [].slice.call(elements); // 现在已经转换成数组了
var
arrayElements = Array.from(elements); // 把NodeList转换成数组的另外一个方法
12)
Перемешать элементы массива
Если вам нравится внешняя библиотекаLodash
Чтобы перетасовать элементы данных таким образом, просто используйте этот трюк:
var list = [1, 2,
3];
console.log(list.sort(function() {
return Math.random() -
0.5
})); // [2,1,3]