gpt4 book ai didi

javascript - 为什么 jQuery 源代码如此多地使用逗号运算符来进行变量赋值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:09:19 26 4
gpt4 key购买 nike

以下是 jQuery 源代码 (1.7.1) 开头的摘录:

// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},

// Map over jQuery in case of overwrite
_jQuery = window.jQuery,

// Map over the $ in case of overwrite
_$ = window.$,


// ...continues...


// [[Class]] -> type pairs
class2type = {};

该代码是一系列变量赋值,全部由逗号运算符连接。据我了解the comma operator ,它计算它前后的表达式,并返回后一个的值。

由于变量赋值链没有被分配给任何东西,我突然想到可以用分号代替逗号重写代码,而不改变它的操作方式。例如

// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
}; /* <----- semicolon */

// Map over jQuery in case of overwrite
_jQuery = window.jQuery; /* <----- semicolon */

// Map over the $ in case of overwrite
_$ = window.$; /* <----- semicolon */

// ...and so on.
  1. 如果用这样的分号重写,代码是否会产生相同的效果,还是我遗漏了什么?

  2. 如果它有同样的效果,用逗号书写它的风格原因是什么? (例如,我知道 Crockford doesn’t like the comma operator (see near the bottom),虽然我不知道为什么。)

最佳答案

没有。逗号分隔 var 声明,所有使用第一个 var 前缀。例如:

var a = 1, // local
b = 2; // local


var a = 1; // local
b = 2; // global!

为了达到同样的效果,这样写:

var a = 1; // local
var b = 2; // local

关于javascript - 为什么 jQuery 源代码如此多地使用逗号运算符来进行变量赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9497185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com