我正在尝试使用主要提供商之一进行在线聊天。他们建议我嵌入如下代码:
<script type="text/javascript">
function embedScriptInsideHTMLtags() {
// responsible code
}
{
embedScriptInsideHTMLtags();
}
</script>
我的问题是,上下两者之间有什么区别?
<script type="text/javascript">
function embedScriptInsideHTMLtags() {
// responsible code
}
embedScriptInsideHTMLtags();
</script>
答案 0 :(得分:2)
第一个示例使用的是block statement。在这种情况下,两个示例没有区别。通过MDN链接:
以var声明或在非严格模式下由函数声明创建的变量不具有块范围。块中引入的变量的作用域为包含的函数或脚本,并且设置变量的效果将持续到块本身之外。换句话说,block语句不会引入作用域。
但是在严格模式
用let和const声明的标识符确实具有块作用域
和
在严格模式下,从ES2015开始,块内部的功能仅限于该块。在ES2015之前,严格模式下禁止使用块级功能。
答案 1 :(得分:2)
您必须了解访问var外部块与访问let和const外部块之间的区别,一个是不可能的,而var则不能。
您的代码没有任何区别,但
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "*****"
minSdkVersion 21
targetSdkVersion 28
multiDexEnabled true
versionCode 1
versionName "1.1"
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation('com.squareup.picasso:picasso:2.71828') {
exclude group: 'com.android.support'
exclude module: ['exifinterface', 'support-annotations']
}
implementation 'com.github.f0ris.sweetalert:library:1.5.1'
implementation group: 'net.lingala.zip4j', name: 'zip4j', version: '1.3.1'
implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
implementation 'com.google.firebase:firebase-core:16.0.9'
implementation 'com.google.firebase:firebase-messaging:18.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.github.chrisbanes:PhotoView:1.2.6'
implementation 'com.android.support:multidex:1.0.3'
}
repositories {
mavenCentral()
}
apply plugin: 'com.google.gms.google-services'
在这里您可以从外部或其他脚本访问c,但无法访问b。就您而言,如果您只是调用一个函数,那么它没有任何区别。
答案 2 :(得分:2)
其他人已经回答了您的特定问题,但是我也想指出,W3C现在建议您从JS <script>
标记中省略type属性,并且自HTML5规范问世以来就已经存在。该规范鼓励开发人员不要像text/javascript
那样在标记中使用冗余的MIME类型。使用脚本标签时,只需写没有任何属性的<script>
。您可以在MDN文档中的脚本标签中阅读以下内容:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-type
类似地,在样式表中使用<link>
标签(与rel="stylesheet
一起使用时,您不再需要使用type="text/css"
。由于CSS是网络上唯一可用的样式表类型,样式表的type属性现在是多余的。您可以在以下MDN文档中进一步了解:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#attr-type