JS零散知识点

  1. 声明未赋值 / 未声明的变量 typeof x == “undefined”
	(() => {
  		let x = (y = 10);
	})();
	console.log(typeof x); // "undefined"
	console.log(typeof y); // "number"
  1. 当map函数没有返回任何值时,即默认返回undefined.对数组中的每一个元素来说,函数块都得到了这个返回值,所以结果中每一个元素都是undefined.
	[1, 2, 3].map(num => {
 	 	if (typeof num === "number") return;xx
 	 	return num * 2;
	});
  1. const num = parseInt(“7*6”, 10);
    =>
    parseInt 检查字符串中的字符是否合法. 一旦遇到一个在指定进制中不合法的字符后,立即停止解析并且忽略后面所有的字符。
    num=7

  2. object的key值只有string和symbol型,其他类型会隐式转换为string类型,所以a[b]和a[c]其实都等价于a[object],所以456会覆盖123

    const a = {}
    const b = { key: 'b' }
    const c = { key: 'c' }
    a[b] = 123
    a[c] = 456
    console.log(a[b]) // 456
    
  3. 基本类型通过它们的值(value)进行比较,而对象通过它们的引用(reference)进行比较

    function checkAge(data) {
      if (data === { age: 18 }) {
        console.log('You are an adult!')
      } else if (data == { age: 18 }) {
        console.log('You are still an adult.')
      } else {
        console.log(`Hmm.. You don't have an age I guess`)
      }
    }
    checkAge({ age: 18 })
    => "Hmm.. You don't have an age I guess"
    
  4. 如果使用标记模板字面量,第一个参数的值总是包含字符串的数组。其余的参数获取的是传递的表达式的值!

    function getPersonInfo(one, two, three) {
      console.log(one)
      console.log(two)
      console.log(three)
    }
    const person = 'Lydia'
    const age = 21
    getPersonInfo`${person} is ${age} years old`
    => ["", " is ", " years old"] "Lydia" 21
    
  5. ReferenceError、SyntaxError、TypeError

    • ReferenceError:当对变量/项的引用被破坏或不存在时,将引发此错误。也就是说,当你尝试引用一个未被定义的变量时,将会抛出一个 ReferenceError 。
    • SyntaxError:Javascript引擎发现了不符合语法规范的代码,会出现此错误。解析期间,JS引擎捕获了此错误。
    • TypeError:TypeError 是指对象用来表示值的类型非预期类型时发生的错误。例如,我们期望它是布尔值,但结果发现它是string类型。
  6. colorChange 是一个静态方法。静态方法被设计为只能被创建它们的构造器使用(也就是 Chameleon),并且不能传递给实例。因为 freddie 是一个实例,静态方法不能被实例使用

    class Chameleon {
      static colorChange(newColor) {
        this.newColor = newColor
        return this.newColor
      }
      constructor({ newColor = 'green' } = {}) {
        this.newColor = newColor
      }
    }
    const freddie = new Chameleon({ newColor: 'purple' })
    freddie.colorChange('orange')
    => TypeError
    
  7. var b = 1;
    (function b(){
        b=2
        console.log(b)
    })()
    =>
    ƒ b(){
        b=2
        console.log(b)
    }
    
  8. 数组拆解: flat: [1,[2,3]] --> [1, 2, 3]

Array.prototype.flat = function() {
    return this.toString().split(',').map(item => +item )
}

版权声明:本文为weixin_39807883原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。