Шаблонные литералы JavaScript и неявное приведение - PullRequest
0 голосов
/ 18 февраля 2019

Какое значение следует присвоить "x", чтобы выполнить следующее условие:

// let x = ?; 

console.log(`${x}` != '' + x) // true
console.log(`${x}` !== '' + x) // true

1 Ответ

0 голосов
/ 18 февраля 2019

Нечто подобное может работать, но это сложно, метод toString() объекта x меняет свое внутреннее состояние при каждом вызове и возвращает его.Это происходит из-за неявного принуждения , которое вступает в силу при попытке привести x к строке (будет использоваться метод toString() объекта, если он найден).

let x = {
  counter: 1,
  toString: () => x.counter++
}

console.log('' + x);
console.log(`${x}`);

console.log(`${x}` != '' + x) // true
console.log(`${x}` !== '' + x) // true
...