• javascript小技巧


    1、如何识别一个数据类型是否是对象(someData):

    (1)someData typeof 'object' console.log({} typeof 'object') // true console.log([] typeof 'object') // true console.log(null typeof 'object') // true 通过typeof无法识别一个数据是否是对象

    (2)Object.prototype.toString.call(someData) === “[object Object]” console.log(Object.prototype.toString.call(obj)); //[object Object] console.log(Object.prototype.toString.call(arr)); //[object Array] console.log(Object.prototype.toString.call(null)); //[object Null]

    2、一个简单的全局变量‘坑’

    (function (){var a = b =3})() console.log(a)// undefined console.log(b)//3 上述解析中b是全局变量,a是局部变量

    3、将 JavaScript 代码包含在一个函数块中有神马意思呢?为什么要这么做?

    换句话说,为什么要用立即执行函数表达式(Immediately-Invoked Function Expression)。

    IIFE 有两个比较经典的使用场景,一是类似于在循环中定时输出数据项,二是类似于 JQuery/Node 的插件和模块开发。

    for(var i = 0; i < 5; i++) { setTimeout(function() { console.log(i); }, 1000); } 上面的输出并不是你以为的0,1,2,3,4,而输出的全部是5,

    这时 IIFE 就能有用了: for(var i = 0; i < 5; i++) { (function(i) { setTimeout(function() { console.log(i); }, 1000); })(i) }

    而在 JQuery/Node 的插件和模块开发中,为避免变量污染,也是一个大大的 IIFE: (function($) { //代码 } )(jQuery);

    全局变量的生存周期是永久的,除非我们手动删除它

  • 相关阅读:
    Android Architecture Components
    adb命令
    Dagger2 scope
    Dagger2学习资源
    Dependency Injection学习笔记
    什么是ADB
    使用AndroidStudio dump heap,再用 Eclipse MAT插件分析内存泄露
    Dagger学习笔记
    linux & shell & nginx & Docker Kubernetes
    Go 目录
  • 原文地址:https://www.cnblogs.com/fqlGlog/p/6418812.html
Copyright © 2020-2023  润新知