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; } ?>javascript - Can I completely stop using var? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Can I completely stop using var? - Stack Overflow

programmeradmin3浏览0评论

I'm taking a Java course and all declarations use block scope( int, double, boolean, etc.). In JavaScript however var is function scope.

let came along in ES6 and gave JS developers block scope. I'm adjusting my coding style and am opting to get rid of var all together.

Is this O.K.?

I'm taking a Java course and all declarations use block scope( int, double, boolean, etc.). In JavaScript however var is function scope.

let came along in ES6 and gave JS developers block scope. I'm adjusting my coding style and am opting to get rid of var all together.

Is this O.K.?

Share Improve this question asked May 14, 2018 at 17:00 user9723618user9723618 10
  • 6 Yes, even google took it out in its style guide. Google JS Style Guide – Gerardo BLANCO Commented May 14, 2018 at 17:02
  • 4 Yes, if you decided to don't support older browser or if you are using a transpiler. In ES6, there's no any reason to prefer var in place of let or const. – Christian Vincenzo Traina Commented May 14, 2018 at 17:02
  • It depends on use. What benefit you will get after removing all the var?Do you have unit test case covered.Will you able to check that after replacing nothing is breaking your code – brk Commented May 14, 2018 at 17:02
  • 3 For fun, note the difference between java and javascript – random_user_name Commented May 14, 2018 at 17:04
  • The only useful application of var is that a global can be redefined in global scope multiple times without causing an error. Can happen if there are multiple scripts that define a global, but only last definition should take effect. – Estus Flask Commented May 14, 2018 at 17:15
 |  Show 5 more ments

2 Answers 2

Reset to default 11

Is this O.K.?

Mostly; possibly entirely. There are very few situations where you would want to use var instead of let/const for technical (rather than style) reasons:

  • If you want to declare a global variable that bees a property of the global object (global let, const, and class create globals, but they don't bee properties of the global object).

    Of course, you could use this.varName = ... instead of var varName, since this at global scope¹ is the global object.

  • If you want to have several files where any of them may be the "first" (but not last) to define the same global, as is mon in older module formats, e.g.:

    var MyApp = MyApp || {};
    MyApp.something = /*...*/;
    

    That works because the var MyApp part is silently ignored if MyApp is already declared; the equivalent structure with let would fail because it cannot be used if the identifier is already declared in the current scope.

    Of course, you're probably using a new module format by now. :-) And if you aren't, again you could do

    this.MyApp = this.MyApp || {};
    MyApp.something = /*...*/;
    

    at global scope.¹

[There used to be a minor performance benefit to using var instead of let in a function where it was used as a loop counter. Recent versions of modern browsers all-but-remove that minor benefit (and it was minor anyway).]


¹ Note that top-level code in a module (ES2015 module, Node.js module, most bundlers...) is not at global scope. It's at module scope. Also note that at the top level of an ES2015 module, this has the value undefined.

If you are only targeting platforms that support ES6, adopt let and const. Stop using var.

发布评论

评论列表(0)

  1. 暂无评论