zoukankan      html  css  js  c++  java
  • 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);

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

  • 相关阅读:
    Git的使用
    Ninject.Extensions.
    centos6的安装
    ASP.NET 5+EntityFramework 7
    Nancy和MVC的简单对比
    ASP.NET 5应用是如何运行的(3)
    映射层超类型
    缓存模块
    怎样的中奖算法能让人信服(转)
    JQuery Easy Ui (Tree树)详解(转)
  • 原文地址:https://www.cnblogs.com/fqlGlog/p/6418812.html
Copyright © 2011-2022 走看看