te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>html - What is the sanest way to use global variables in Javascript? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

html - What is the sanest way to use global variables in Javascript? - Stack Overflow

programmeradmin3浏览0评论

What is the best way to use global variables in Javascript?

Should I do document.x="this", document.y="that"?

How will I avoid collisions in the long run?

What is the best way to use global variables in Javascript?

Should I do document.x="this", document.y="that"?

How will I avoid collisions in the long run?

Share Improve this question asked Jan 5, 2010 at 15:25 flybywireflybywire 274k200 gold badges405 silver badges509 bronze badges
Add a ment  | 

5 Answers 5

Reset to default 19

I personally define a namespace for my application data

var myns = {};

and define everything inside that namespace

myns.foo = 50;

In this sense, the only variable you attach to the global object is the namespace object. Everything else is globally accessible, but within your namespace. This reduces collisions on the global object, and eventually you can define a different namespace if you so wish.

IMHO, the best way to avoid collisions is to work on a temporary scope, using a self-executing function expression, keeping all your library code encapsulated, and expose your global objects in a very selective way, using as few as possible:

(function(){
  var myLib = window.myLib = function(){ // expose object
    // Initialize
  };
  // ...
})();

Anything declared outside a function, is, by default, global. You don't need to attach it to document explicitly to make it so. In the long run you WONT avoid collisions which is why this is a Bad Practice.

You can write Object Oriented JS and keep your variables in one name space, more or less.

As other answers point out, placing your code inside a function prevents it from being globally accessible. You can also use the return value of the function to expose only the variables you want:

var myAPI = (function() {
    var examplePrivateVariable = 1;
    var examplePublicVariable = 1;

    function doSomethingPublic() { /*...*/ }
    function doSomethingPrivate() { /*...*/ }

    return {
        examplePrivateVariable: examplePrivateVariable,
        doSomethingPublic: doSomethingPublic
    };
})();

myAPI.doSomethingPublic();

I agree with the ments above. I typically create an object, hide the data, and expose getters (rarely) and behavior as needed.

发布评论

评论列表(0)

  1. 暂无评论