`
txf2004
  • 浏览: 7039657 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在javascript中使用php风格的$globals

阅读更多

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

在javascript中使用php风格的$globals

JavaScript有隐含的全局变量。当你不使用var来定义a = 1,而直接定义a=1时,这个变量a将成为一个全局变量。有的认为这是一个错误,应该避免全局变量,因为它们往往会在意想不到的地方出错,尤其是在项目参与人员很多的情况下。

在PHP当中,默认的是局部变量。如果你需要一个全局变量,那么你必须要将要声明为全局变量的变量放到$globals这个数组中。

怎样在javascripts中使用$globals呢?通过为全局公约在你的javascripts呢?在脚本文件顶部声明:
$GLOBALS = {};
那么每一次当你需要一个全局变量,您可以这样做:

$GLOBALS[ ' myglob ' ] = 1 ; / /非常像PHP的样式

或者如果你喜欢,也可以这样:

$globals.myglob = 1 ;
这样做的优点:

*全局变量容易识别(甚至从飞机都可以看见)
*如果变量不定义成$GLOBAL,那么它就是局部变量。如果变量没有使用var,那么它将产生一个错误

缺点:

*这种使用方法,不是官方规定的,不强制使用,只是一项约定俗成的方法。

Stoyan Stefanov's Blog: PHP-style $GLOBALS in Javascript?

Javascript has implied globals. When you skip the var in var a = 1; and go a = 1;, then a becomes a global variable. Some consider this an error in the language. Global variables should be avoided because they tend to overwrite each other in unexpected places, especially if the project grows in LOC and number of developers.
In PHP on the other hand, variables are local. If you need a global variable, then you have to have to be explicit about it using the $GLOBALS superglobal array.
So how about this: adopt the $GLOBALS convention in your JavaScripts? At the top of the script you go:
$GLOBALS = {};
Then every time you need a global variable, you do:
$GLOBALS['myglob'] = 1; // very PHP-like
or if you prefer:
$GLOBALS.myglob = 1;
Benefits of the approach:
•global variables easy to spot (even from an aeroplane)
•if it's not $GLOBAL, it's meant to be local. If it's missing the var, it's an error
Drawback:
•It's a convention, so it can only help, but not enforce any coding practices

分享到:
评论

相关推荐

    PHP从入门到精通(免费).docx

    虽然这种分界符源自ASP,但在PHP中也可以使用,尤其是在希望保持与其他使用ASP风格代码一致的情况下。 #### 二、PHP标识符规则 - **标识符组成**:由字母、数字以及下划线组成,但首字母必须是字母或下划线。 - **...

    PHP从入门到精通

    - 全局变量:在函数外部定义的变量,可以在整个脚本中使用。 - 局部变量:在函数内部定义的变量,只在该函数内有效。 - 使用`global`关键字可以在函数内部访问全局变量。 12. **静态变量** - 用 `static` 修饰...

    php入门文档

    虽然这种风格并不常见,但在某些特定环境中可能会用到。 4. **ASP 风格分界符**:`和 `%>`。这是一种模仿 ASP 语法的风格,主要用于兼容性需求。 #### 二、标识符与变量 - **标识符**:PHP 中的标识符可以包含字母...

    PHP语法规范.docx编程资料

    这种风格主要用于与JavaScript和VBScript等脚本语言保持一致的上下文中,但在实际应用中较少见。 4. **ASP风格分界符**:`和 `%>`。这种风格模仿了ASP(Active Server Pages)的标记,主要用于与ASP代码混合使用的...

    PHP应用程序体系架构

    3. **名称空间(Namespace)**:使用名称空间可以避免类和函数名称的冲突,尤其是在大型项目中。在PHP中,类和函数可以通过命名空间进行组织,提高代码的可读性和可维护性。 4. **数据库抽象层**:数据库抽象层提供了...

    互联网软件应用与开发.doc

    15. **$GLOBALS数组**:在PHP编程中,$GLOBALS数组是一个特殊变量,用于存储全局变量,允许在函数内部访问全局变量,无需使用`global`关键字进行声明。 这些知识点构成了互联网软件应用与开发的基石,理解并熟练...

    php+mysql扎实个人基本功[参考].pdf

    1. **禁止使用register_globals**:register_globals在旧版PHP中默认开启,它允许全局变量直接由HTTP请求参数设置。然而,这可能导致安全问题,因此应当关闭,并通过正确的方法(如$_GET, $_POST)获取请求数据。 2...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    你要在DTD中定义一个元素,然后在XML文档中使用。元素的定义语法为:<!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*> 说明: "<!ELEMENT" 是元素的声明,说明你要定义的是一个元素; 声明后面的"DESCRIPTION",...

    Web Maestro - Content and Module Manager-开源

    5. "web_maestro_globals":这个文件夹可能包含全局变量、配置文件或者一些通用的功能代码,它们在整个应用程序中被广泛使用。 作为一个开源软件,Web Maestro允许开发者查看和修改源代码,这为定制化开发提供了...

Global site tag (gtag.js) - Google Analytics