JS基础 & CSS面试题 --2020.11.11
a.JS基础
-
i.什么是Javascript, 什么是ECMAScript,两者之间的关系
1.ECMAScript
即 ECMA-262 定义的语言,并不局限于 Web 浏览器。事实上,这门语言没有输入和输出之类的方法。ECMA-262 将这门语言作为一个基准来定义,以便在它之上再构建更稳健的脚本语言。
Web 浏览器只是 ECMAScript 实现可能存在的一种宿主环境(host environment)。宿主环境提供ECMAScript 的基准实现和与环境自身交互必需的扩展。扩展(比如 DOM)使用ECMAScript 核心类型和语法,提供特定于环境的额外功能。其他宿主环境还有服务器端 JavaScript 平台 Node.js和即将被淘汰的 Adobe Flash。如果不涉及浏览器的话,ECMA-262 到底定义了什么?在基本的层面,它描述这门语言的如下部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 全局对象
ECMAScript 只是对实现这个规范描述的所有方面的一门语言的称呼。JavaScript 实现了ECMAScript。
2.JavaScript
是一门用来与网页交互的脚本语言,包含以下三个组成部分。
- ECMAScript:由 ECMA-262 定义并提供核心功能。
- 文档对象模型(DOM):提供与网页内容交互的方法和接口。
- 浏览器对象模型(BOM):提供与浏览器交互的方法和接口。
-
ii.HTML文件中引入JS的方式
将 JavaScript 插入 HTML 的主要方法是使用< script > 元素。
< script> 元素有下列 8 个属性:-
async :可选。表示应该立即开始下载脚本,但不能阻止其他页面动作,比如下载资源或等待其他脚本加载。只对外部脚本文件有效。
-
charset :可选。使用 src 属性指定的代码字符集。这个属性很少使用,因为大多数浏览器不在乎它的值。
-
crossorigin :可选。配置相关请求的CORS(跨源资源共享)设置。默认不使用CORS。 crossorigin=“anonymous” 配置文件请求不必设置凭据标志。 crossorigin=“use-credentials”
设置凭据标志,意味着出站请求会包含凭据。 -
defer :可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。在 IE7 及更早的版本中,对行内脚本也可以指定这个属性。
-
integrity :可选。允许比对接收到的资源和指定的加密签名以验证子资源完整性(SRI,Subresource Integrity)。如果接收到的资源的签名与这个属性指定的签名不匹配,则页面会报错,脚本不会执行。这个属性可以用于确保内容分发网络(CDN,Content
Delivery Network)不会提供恶意内容。 -
language :废弃。最初用于表示代码块中的脚本语言(如 “JavaScript” 、 "JavaScript 1.2"或 “VBScript” )。大多数浏览器都会忽略这个属性,不应该再使用它。
-
src :可选。表示包含要执行的代码的外部文件。
-
type :可选。代替 language ,表示代码块中脚本语言的内容类型(也称 MIME 类型)。按照惯例,这个值始终都是"text/javascript" ,尽管 “text/javascript” 和"text/ecmascript"都已经废弃了。JavaScript 文件的 MIME 类型通常是"application/x-javascript" ,不过给type 属性这个值有可能导致脚本被忽略。在非 IE的浏览器中有效的其他值还有"application/javascript" 和"application/ecmascript" 。如果这个值是 module ,则代码会被当成 ES6 模块,而且只有这时候代码中才能出现 import 和 export 关键字。
使用 < script> 的方式有两种:
1.通过它直接在网页中嵌入 JavaScript 代码
2.以及通过它在网页中包含外部 JavaScript 文件要嵌入行内 JavaScript 代码,直接把代码放在 < script> 元素中就行:
< script>
function sayHi() {
console.log(“Hi!”);
}
< /script>要包含外部文件中的 JavaScript,就必须使用 src 属性。这个属性的值是一个 URL,指向包含JavaScript 代码的文件,比如:
< script src=“example.js”>
这个例子在页面中加载了一个名为 example.js 的外部文件。文件本身只需包含要放在 < script> 的起始及结束标签中间的 JavaScript 代码。另外,使用了 src 属性的 标签中再包含其他JavaScript 代码。如果两者都提供的话,则浏览器只会下载并执行脚本文件,从而忽略行内代码。
-
-
iii.JS中常见的几种数据类型
-
数值类型(Number)
一切数字都是数值类型(包括:十进制,二进制,十六进制,八进制等)
如:
var a=1; -
字符串类型(String)
被引号裹的所有内容(可以是单引号,可以是双引号)
如:
var b = “hello world”;
var c = “34”;
var d = ‘hello12’; -
布尔类型(Boolean)
对于布尔值,目前只有false和true两种
如:
var e = true;
var f = false; -
Null类型(Null)
它只有一个值,就是它本身自己null,它表示空的意思
如:
var g = null; -
undefined类型(undefined)
它只有一个值,就是它本身自己undefined,它表示没有值的意思。我们常见 它就是在给它定义了却没有赋值时见到。
如:
var k;
console.log(k);
-
b.CSS面试题
-
RGBA() 与 opacity 在透明效果上有什么区别?
- opacity 是属性,rgba()是函数,计算之后是个属性值;
- opacity 作用于元素和元素的内容,内容会继承元素的透明度,取值0-1;
- rgba() 一般作为背景色 background-color 或者颜色 color 的属性值,透明度由其中的 alpha 值生效,取值0-1;