理解bootstrap.js变量声明
understanding bootstrap.js variable declaration
我刚刚在bootstrap模式.js中查看代码,遇到了以下困难:
bootstrap Modal.js code :
var Modal = function (element, options) {
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.$dialog = this.$element.find('.modal-dialog')
this.$backdrop = null
this.isShown = null
this.originalBodyPad = null
this.scrollbarWidth = 0
this.ignoreBackdropClick = false
}
在我的代码中,我做了以下操作:
var Modal = function(element , options){
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.isShown = null
this.scrollbarWidth = 0
this.$backdrop =
}
抛出了一个错误(请参阅最后一个变量),所以我将代码更改为:
var Modal = function(element , options){
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.isShown = null
this.$backdrop =
this.scrollbarWidth = 0
}
一切都很好,为什么会出现错误?我在控制台中得到一个SyntaxError。
我的部分问题:看看this.$body
是如何在插件中定义的,它的定义如下:
this.$body = $(document.body)
现在,如果我尝试执行this.$body = $(body)
,就会抛出一个错误。为什么?
这不是一个完整的声明:
this.$backdrop =
这是一个语法错误。不能只在那里留下一个悬空的=
,而在赋值的右侧什么都没有。
第二个例子有效的原因:
this.$backdrop =
this.scrollbarWidth = 0
是因为这不再是一个悬而未决的=
。现在,你已经写了这个:
this.$backdrop = this.scrollbarWidth = 0
这是完全有效的。CCD_ 5与CCD_。
JavaScript使用分号来分隔语句,而不是换行符。但是,当您省略分号时,自动分号插入(ASI)会接管它,并将分号放在需要用来分隔语句的位置。
分号插入位置的规则实际上是非常直接的,当JavaScript会引入语法错误时,它永远不会添加分号(特别是,JavaScript会查看一行是否以二进制运算符结尾,以及下一行是否是有效的操作数)。因此,在您的工作示例中,这两行被解析为单个表达式。
在您的坏例子的情况下,没有办法插入分号来保存:
// ...
this.$backdrop =
}
无论是否使用分号,都将是语法错误。
请注意,在您的代码中没有;
行终止。这是有效的,尽管不值得考虑。
这么说,这个:
var Modal=函数(元素,选项){this.options=选项这个$body=$(document.body)这个$element=$(元素)this.isShown=空this.crollbarWidth=0这个$背景=}
不是有效的javascript,因为您没有向this.$backdrop
分配任何内容
而这个:
var Modal = function(element , options){
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.isShown = null
this.$backdrop =
this.scrollbarWidth = 0
}
是有效的,因为js解释器将最后一行解析为
this.$backdrop = this.scrollbarWidth = 0
这是有效的。
通常的最佳做法是始终使用;
线路终端,以避免类似的错误和误解。
第二个问题
body
是一个未定义的变量,因此$(body)
抛出一个错误。
CCD_ 13是CCD_ 14的一个性质。
因此,当您引用document.body
时,不会出现错误。
或者,您可以使用使用jquery访问页面主体
$('body')
- 使用同一对象中的其他变量声明变量
- 用||声明变量
- 使用javascript使用for循环声明变量
- JavaScript-用for循环项声明变量
- try声明变量的作用域
- 有没有一种方法可以使用函数参数的值来声明变量
- 在使用javascript再次声明变量之前,请先清除或删除该变量
- Javascript未声明变量
- 在Javascript中,我可以在声明变量之前使用它吗
- 在html文档的开头声明变量
- 按什么顺序声明变量和函数
- 如何以正确的方式在jQuery中声明变量
- 在 Angular 服务中接收函数的未声明变量
- 字典和声明变量
- 需要一些有关以以下样式声明变量的信息
- 在 jQuery 中使用常量声明变量
- 从外部文件在打字稿中声明变量得到引用错误:..未定义
- JavaScript,声明变量时混淆语法
- 在 javascript 函数和内存管理中声明变量
- Javascript 使用 if 语句声明变量