# javascript 基础测试

## 单选题
1. javascript 代码需要放置在______标签之间
   A.scripe
   B.javascript
   C.script
   D.scripte

   答案 A
   
   解析  js代码需要放置在script标签之间才能被识别
   
2. script 标签可以被放置的位置是   
    A.<!doctype>文档声明之后就可以
    B.boby标签内部
    C.html标签结束之后
    D.head标签内部

    答案  D

    解析  script标签可以放置在 head标签内或者是 body 标签内部

    （B选项是boby标签）

3. 下面哪种javascript引入方式是错误的
    A.在.html文件中的body标签中创建script 标签  在script 标签中写 js代码
    B.在.js文件中写js代码， 在.html通过 ``` <link src="js文件路径"> ```
    C.在html 标签内执行js语句 如:``` <button onclick="alert()">save</button> ```
    D.在.html文件内 在head标签中创建script 标签  在script 标签中写 js代码

答案  B

解析  link标签是用来引入外部css文件的

1. 下面两段代码，js文件的加载顺序
   demo1:

   ```
    <script async src="js/vendor/jquery.js"></script>
    <script async src="js/script2.js"></script>
    <script async src="js/script3.js"></script>
   
   ```
    demo2:

    ```
    <script defer src="js/vendor/jquery.js"></script>
    <script defer src="js/script2.js"></script>
    <script defer src="js/script3.js"></script>
   
    ```
    A.demo1的顺序为：jquery.js, script2,script3
      demo2的顺序为：script2.js, script3.js, jquery
    B.demo1的顺序为：script2.js,script3.js,jquery.js
      demo2的顺序为：script3.js,script2.js，jquery.js
    C.demo1的顺序为：只执行script2
      demo2的顺序是  jquery.js, script2.js, script3.js

    D.demo1的顺序是：script3.js,script2.js,jquery.js
      demo2的执行顺序是：script3.js script2.js jquery,js

   答案：C

   解析 引入js时 script标签中加入async后，js文件的执行顺序不确定  。但是 如果js代码报错，就会造成阻塞 即后面的js代码不执行 所以 demo1 除了jquery.js, script2.js, script3.js 这个顺序之外  其他顺序会因为报错只执行第一个

   引入script标签中加入 defer后，js文件执行顺序确定为 文件引入的顺序
   
   defer属性只支持外部引入的方式
   
   
   
2. 下面哪一种js注释添加方式是正确的
    A. /
    B.//
    C.\
    D.*

    答案 B
    
    js单行注释 符号是//   js多行注释符号是 /*  */
    
    
    
3. console.log()在chrome运行的结果会打印在哪里
    A. 页面上
    B.开发者工具中的sources中
    C.开发者工具中的xhr中
    D.开发者工具的console中

    答案 D  

    解析  console.log 会打印在chrome浏览器的console板块中

    

4. 下面哪种JavaScript输出数据方式的表述是错的：

    A.使用 window.alert() 弹出带输入框的警告框。
    B.使用 document.write() 方法将内容写到 HTML 文档中。
    C.使用 innerHTML 写入到 HTML 元素。
    D.使用 console.log() 写入到浏览器的控制台。

    答案： A

    解析 alert 弹出的警告框不包含 输入框

5. 下面哪个关键字能声明js变量
    A.def
    B.var
    C.数据类型+变量名=变量值
    D.变量不需要声明 直接写变量名就行

    答案 B

6. 下面哪个不是js关键字
    A.abstract
    B.let
    C.import
    D.absolute

    答案  D

    解析 absolute是css的绝对定位

    

7. 下面哪个变量名符合要求
    A.shop1
    B.public
    C.point&
    D.12SY

    答案 A
    解析：  


    名称可包含字母、数字、下划线和美元符号
    名称必须以字母开头
    名称也可以 $ 和 _ 开头（但是在本教程中我们不会这么做）
    名称对大小写敏感（y 和 Y 是不同的变量）
    保留字（比如 JavaScript 的关键词）无法用作变量名称

8. 阅读下面代码 选择运行结果
    code :
  ```
  var person = "Bill    ";
  var person1="Bill"; 
  console.log(person,person1)

  ```
  A. bill        Bill
  B. BillBill
  C.BILLBILL
  D.     billbill





9. 将 "025.5" 的string类型变量转化为 number 类型后 值是
  A.0255
  B.255
  C.25.5
  D.5.5


10.  1 + ‘1aa’ 的运算结果是
  A.11aa
  B.2
  C.2aa
  D.1aa

11.  0 || 3 || 3 的返回结果是 
   A.0
   B.3
   C.true
   D.1
12.  1 && 0 && 5 的返回结果是 
   A.0
   B.1
   C.true
   D.5
## 填空题
1. 什么是字面量  常见的字面量有__  , __ , __ , __ , __ , __
   
   答案：字面量（literal）用于表达源代码中一个固定值的表示法（notation）
   字符串自变量  整数字面量  浮点数字面量 布尔字面量  数组字面量  对象字面量

2. 运算符的优先级
3. js基本数据类型和引用数据类型的区别是__________
4. 外部引入js文件的优势是
5. 在html中 javascript语句是由   "执行"的"指令"
6. javascript语句由   ，   ，   ，   构成
7.    分割javascript语句
8. 阅读下面代码 写出运行结果
code :

```
typeof "John"         
typeof 3.14            
typeof NaN                   
typeof false                 
typeof [1,2,3,4]              
typeof {name:'John', age:34}  
typeof new Date()            
typeof function () {}        
typeof myCar                  //  (如果 myCar 没有声明)
typeof null     
``` 
答案：
```
 typeof "John"                 // 返回 string
typeof 3.14                   // 返回 number
typeof NaN                    // 返回 number
typeof false                  // 返回 boolean
typeof [1,2,3,4]              // 返回 object
typeof {name:'John', age:34}  // 返回 object
typeof new Date()             // 返回 object
typeof function () {}         // 返回 function
typeof myCar                  // 返回 undefined (如果 myCar 没有声明)
typeof null                   // 返回 object 

```



