这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战
记录下自己刷到的习题及解析方法
-
ES6变量声明
(单选题) 关于ES6声明变量,以下哪个代码段不会报错()
A. const a;
B. let a = 1;
let a = 2;
C. var a = 1;
var a = 2;
D. {
let a = 1;
}
var b = a;
A const必须在定义时赋值
B let和const不能重复定义
D let,const 区块作用域
-
ES6解构
关于ES6解构表达式
let [a,b, c,d, e] = "hello";
描述正确的是()
A. e = "hello";其它都为undefined
B. 当中 a = "h", b = "e";
C. 语法报错
正确答案: B
字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。
const [a, b, c, d, e] = 'hello'; a // "h" b // "e" c // "l" d // "l" e // "o" 类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。
let {length : len} = 'hello'; len // 5
-
CSS
下面哪一个属于 CSS 命名规范 ()
A. PostCSS
B. BEM
C. Less
D. Sass
正确答案: B
这题不是让判断四个选项命名是否规范,而是考察知识广度。 PostCSS:转换CSS的工具 BEM:命名规范block-name__element-name--modifier-name,也就是模块名 + 元素名 + 修饰器名,以保证命名不会冲突 LESS、SASS都是CSS预处理器
-
typeof操作符,instanceof操作符
JS中值的类型分为原始值类型和对象类型。原始值类型包括 number, string, boolean, null 和 undefined;对象类型即 object。首先原始值类型它就不是对象。
另外,要注意 'hello' 和 new String('hello') 的区别,前者是字符串字面值,属于原始类型,而后者是对象。用 typeof 运算符返回的值也是完全不一样的:
typeof 'hello'; // 'string'
typeof new String('hello'); // 'object'
之所以很多人分不清字符串字面值和 String 对象,归根结底就是 JS 的语法对你们太过纵容了。当执行 'hello'.length 时,发现可以意料之中的返回 5,你们就觉得 'hello' 就是 String 对象,不然它怎么会有 String 对象的属性。其实,这是由于 JS 在执行到这条语句的时候,内部将 'hello' 包装成了一个 String 对象,执行完后,再把这个对象丢弃了,这种语法叫做 “装箱”,在其他面向对象语言里也有(如 C#)。不要认为 JS 帮你装箱了,你就可以在写代码的时候不分箱里箱外了!
1.操作符
(1)typeof操作符
格式:result=typeof variable
返回值:
undefined 值未定义
boolean 布尔值
string 字符串
number 数值
object 对象、null
function 函数
(2)instanceof操作符
格式:result=variable instanceof constructor
返回值:
true
false