使用严格导致未定义的函数

时间:2017-06-30 13:05:43

标签: jquery function undefined use-strict

我正在尝试组织我的js文件并遵循建议的模块模式。当我使用" use-strict"在这种模式中,函数被声明为未定义,没有" use-strict"该方法功能正常。是否建议使用严格模式,何时使用该功能不起作用?

var envy = (function( $ ) {
   'use strict';

   /**
    * Viewport adjusments.
    *
    * @since 1.0.0
    */
   irp_viewportadjst = function() {
      $('meta[name="viewport"]').attr('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0');
   },

   /**
    * Fire events on document ready, and bind other events.
    *
    * @since 1.0.0
    */
   ready = function() {
       irp_viewportadjst();
   };

   // Only expose the ready function to the world
   return {
       ready: ready
    };

   })( jQuery );
jQuery( envy.ready );

1 个答案:

答案 0 :(得分:1)

您的代码中需要变量声明提升。严格模式声明要求您先前定义函数名称。 定义您的函数名称 var irp_viewportadjst, ready;或 更改代码如下

var envy = (function( $ ) {
   'use strict';

   /**
    * Viewport adjusments.
    *
    * @since 1.0.0
    */
   var irp_viewportadjst = function() {
      $('meta[name="viewport"]').attr('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0');
   };

   /**
    * Fire events on document ready, and bind other events.
    *
    * @since 1.0.0
    */
   var ready = function() {
       irp_viewportadjst();
   };

   // Only expose the ready function to the world
   return {
       ready: ready
    };

   })( jQuery );
jQuery( envy.ready );