整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JavaScript 语句

avaScript 语句



在 HTML 中,JavaScript 语句是由 web 浏览器“执行”的“指令”。

实例

var x, y, z;	// 语句 1
x = 22;		// 语句 2
y = 11;		// 语句 3
z = x + y;	// 语句 4

JavaScript 程序

计算机程序是由计算机“执行”的一系列“指令”。

在编程语言中,这些编程指令被称为语句。

JavaScript 程序就是一系列的编程语句

JavaScript 语句

JavaScript 语句由以下构成:

值、运算符、表达式、关键词和注释。

这条语句告诉浏览器在 id="demo" 的 HTML 元素中输出 "Hello Kitty.":

实例

document.getElementById("demo").innerHTML = "Hello Kitty.";

大多数 JavaScript 程序都包含许多 JavaScript 语句。

这些语句会按照它们被编写的顺序逐一执行。

注释:JavaScript 程序(以及 JavaScript 语句)常被称为 JavaScript 代码。

分号 ;

分号分隔 JavaScript 语句。

请在每条可执行的语句之后添加分号:

a = 5;
b = 6;
c = a + b;

如果有分号分隔,允许在同一行写多条语句:

a = 5; b = 6; c = a + b;

您可能在网上看到不带分号的例子。

提示:以分号结束语句不是必需的,但我们仍然强烈建议您这么做。

JavaScript 空白字符

JavaScript 会忽略多个空格。您可以向脚本添加空格,以增强可读性。

下面这两行是相等的:

var person = "Bill";
var person="Bill"; 

在运算符旁边( = + - * / )添加空格是个好习惯:

var x = y + z;

JavaScript 行长度和折行

为了达到最佳的可读性,程序员们常常喜欢把代码行控制在 80 个字符以内。

如果 JavaScript 语句太长,对其进行折行的最佳位置是某个运算符:

实例

document.getElementById("demo").innerHTML =
 "Hello Kitty.";

JavaScript 代码块

JavaScript 语句可以用花括号({...})组合在代码块中。

代码块的作用是定义一同执行的语句。

您会在 JavaScript 中看到成块组合在一起的语句:

实例

function myFunction() {
    document.getElementById("demo").innerHTML = "Hello Kitty.";
    document.getElementById("myDIV").innerHTML = "How are you?";
}

注释:在本教程中我们为代码块用了 4 个空格的缩进。

提示:您将稍后在本教程中学到更多有关函数的内容。

JavaScript 关键词

JavaScript 语句常常通过某个关键词来标识需要执行的 JavaScript 动作。

下面的表格列出了一部分将在教程中学到的关键词:

关键词描述break终止 switch 或循环。continue跳出循环并在顶端开始。debugger停止执行 JavaScript,并调用调试函数(如果可用)。do ... while执行语句块,并在条件为真时重复代码块。for标记需被执行的语句块,只要条件为真。function声明函数。if ... else标记需被执行的语句块,根据某个条件。return退出函数。switch标记需被执行的语句块,根据不同的情况。try ... catch对语句块实现错误处理。var声明变量。

注释:JavaScript 关键词指的是保留的单词。保留词无法用作变量名。

日常开发中,为了方便数据的输入和输出,JavaScript提供了一些常用的输入输出语句,具体如表1-3所示。
表1常用的输入输出语句

类型

语句

说明

输入

prompt()

用于在浏览器中弹出输入框,用户可以输入内容

输出

alert()

用于在浏览器中弹出警告框

document.write()

用于在网页中输出内容

console.log()

用于在控制台中输出信息

接下来将分别演示document.write0、console.log0和promptO的使用。

1. document.write()

document.write0的输出内容中如果含有HTML标签,会被浏览器解析。下面利用documenL.write0在页面中输出“我是document.write0语句!”,示例代码如下。

document.write('我是document.write()语句!');

2. console.log()

利用console.log0语句在控制台输出“我是console.log0语句!”,示例代码如下。

console.log('我是console.log()语句!');

console:.log0的输出结果需要在浏览器的控制台中查看。在Chrome 浏览器中按“F12”键(或在网页空白区域右击,在弹出的菜单中选择“检查”)启动开发者工具,然后切换到“Console”(控制台)面板,即可看到console.log0的输出结果。

3.prompt()

利用prompt0语句实现在页面中弹出一个带有提示信息的输入框,示例代码如下。

prompt(请输入姓名:');

上述示例代码运行后,将在页面中弹出一个输人框并提示用户“请输人姓名:”提示框。

上流行的解决方案是将assetsPublicPath: '/'改成'./',下面说一下这个解决方案的弊端:

通常页面空白的问题出现大多数是由于Spring Boot端配置了server.servlet.context-path,上下文改变了css, js等文件的访问路径,文件无法加载导致index.html显示空白。'/'改成'./'是将绝对路径变为相对路径,可以动态适应Spring Boot端上下文的改变,这是为什么这个解决方案起作用的原因。

Vue项目部署在Spring Boot出现的另一个常见问题是当刷新浏览器的时候出现white label, 也就是404错误,解决的方案基本是把error page配置成为Vue的index.html。

这两个解决方案有冲突的地方,当router出现子路径的时候刷新浏览器,error page会指向Vue的index.html页面,此时页面中访问css,js文件的路径是相对路径,也就是上下文路径+router子路径,这将导致css,js再次无法正常加载,这就是相对路径的弊端。

由于router会出现子路径,因此必须保证assetsPublicPath为绝对路径,下面讲一下保持绝对路径的解决方案:

1 假设Spring Boot端配置server.servlet.context-path: api, 对应Vue的/config/index.js中assetsPublicPath: '/'改成 '/api/'

2 router/index.js中配置base: '/api/', 这是保证浏览器刷新时上下文参数和router跳转路径一致。

3 对于Ajax请求需要配置baseURL, 如果使用Axios, 可以采用如下方法在main.js中配置

// http request 拦截器
Axios.interceptors.request.use(
config => {
if (localStorage.getItem('id_token')) {
config.headers.Authorization = localStorage.getItem('id_token')
}
config.baseURL = '/api'
return config
},
err => {
return Promise.reject(err)
})

4 另外需要注意的一点,按照Spring Boot默认配置, 在Vue端/config/index.js中assetsSubDirectory: 'static'要改变为其它字符,比如:'content', 'vue', 'api'等等。

5 试过将assetsSubDirectory配置为空,它和另一个css图片加载的方案有冲突,图片加载解决方案是在/build/util.js中加一行配置

// Extract CSS when that option is specified

// (which is the case during production build)

if (options.extract) {

return ExtractTextPlugin.extract({

use: loaders,

fallback: 'vue-style-loader',

publicPath: '../../'

})

结尾附上Spring Boot端将error page指向Vue的index.html代码:

import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.web.server.ConfigurableWebServerFactory;
 import org.springframework.boot.web.server.ErrorPage;
 import org.springframework.boot.web.server.WebServerFactoryCustomizer;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.HttpStatus;
 @Configuration
 public class ServletConfig {
 private static final Logger logger = LoggerFactory.getLogger(ServletConfig.class);
 @Bean
 public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {
 logger.info("come to 404 error page");
 return factory -> {
 ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html");
 factory.addErrorPages(error404Page);
 };
 }
 }

对前端全栈工程师感兴趣的同学关注我的头条号,并在后台私信发送关键字:“前端”即可获取免费的前端全栈工程师学习资料

知识体系已整理好,欢迎免费领取。还有面试视频分享可以免费获取。关注我,可以获得没有的架构经验哦!!