面试
1.JS是什么?
JavaScript: 一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,
最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
组成:ECMAScript + DOM + BOM
other
1.JS是专门为网页交互而设计一个弱类型脚本语言,弱类型即数据类型可以被忽略的语言,一个变量可以赋予不同数据类型;
的值,脚本语言即直接运行而不需要编译的语言
2.JS由web浏览器进行解释和执行;
3.JS是由BOM(浏览器对象模型)和DOM(文档对象模型)在ECMAScript的规则下组成的语言.
2.JS的数据类型有哪几种,哪些是简单类型变量,哪些是复杂类型变量,它们有什么区别?
js的数据类型分为两种:简单(基本)数据类型,复杂(引用)数据类型
/* (1)--简单数据类型:
* 1、number(数字类型)
* 2、string(字符串类型)
* 用双引号"" 或者单引号'' 或者反单引号``括起来的内容就是字符串(其中单双引号没有区别)
* 3、Boolean(布尔值),只有两个值:true,false
* 4、undefined,只有一个值:undefined
* 5、null,只有一个值:null
* 6、symbol:表示唯一的值
* (2)--复杂数据类型:
* object(对象)
*/
区别:
1、基本数据类型把数据名和值直接存储在栈当中;
而复杂数据类型在栈中存储数据名和一个堆的地址,在堆中存储属性及值,访问时先从栈中获取地址,再到堆中拿出相应的值。
2、基本数据类型作为参数时,函数内部对参数值的修改不会改变外部变量的值;
复杂数据类型作为参数时,函数内部对参数值的修改会改变外部变量的值。
other
基本数据类型有undefined、null、Boolean、number、string
复杂数据类型为object(function,array)
基本类型变量存的是值,复杂类型的变量存的是内存地址
3.用代码来表示具体如何定义JS的各种类型变量?
五大常用知识:字符串、数字、布尔、Undefined、Null /
三大引用类型:函数、对象、数组
var x = 123;
var y = "123";
var z = true;
var k = undefined;
var j = null;
var i = new Object();
var p = function(){}
var q = new Array();
4.undefined和Null的区别?
undefined:已经声明变量,但没有赋值;
Null:连变量都没有声明
1、undefined表示一个变量没有被声明,或者被声明了但没有被赋值(未初始化),
一个没有传入实参的形参变量的值为undefined,如果一个函数什么都不返回,则该函数默认返回undefined;
null是一个表示“没有值”的值;
2、Javascript将未赋值的变量默认值设为undefined;而从来不会将变量设为null。
它是用来让程序员表明某个用var声明的变量时没有值的;
3、undefined不是一个有效的JSON,而null是;
4、undefined的类型(typeof)是undefined;null的类型(typeof)是object. ;
5、都是基本类型;都是falsy (Boolean(undefined) ->// false, Boolean(null) ->// false);
6、判断一个变量是否是undefined。typeof variable === "undefined";
判断一个变量是否是null。variable === null;
7、双等号比较时它们相等(null==undefined ->// true),
但三等号比较时不相等(null===undefined ->// false);
5.script标签写在页面头部和底部,有何区别?
加载页面时,按照文档流的方向读取,由于JS文件过大,可能会阻塞文档解析,出现白屏的页面;
由于JS需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,所以建议放在底部。
6.如何保证在页面基本结构和样式加载后,再执行我们的JS脚本
window.onload=function(){...}
7.如何判断一个变量是属于哪种变量类型(字符串、数值、布尔值、Null、undefined、对象、数组、函数)?
console.log(typeof 变量)
console.log(Object.constructor.toString.call(obj).ceil(8,-1))
8.JS的注释写法有哪几种,有何区别?
第一种:"//" 单行注释 可相互嵌套;第二种:/ ** / 多行注释 不可嵌套
9.javascript引入页面有几种形式
三种:
* 1、通过script标签来书写js代码
* 2、通过行内书写js脚本
* 3、通过script的src属性引入外部js脚本
10.var 的意义何在
变量声明提前
11.JS 加载属性
当页面加载完成后才执行js脚本:
1、window.onload:
2、defer:延迟 => 当引入多个外部脚本的时候,会按照引入的顺序来执行js脚本的,但是在实际操作中不一定按顺序执行,因为每个浏览器不同。
3、async:异步 => 当引入多个外部脚本的时候,不一定按照引入的顺序来执行js脚本。
defer 和 async 只对外部脚本有效***
<!--如果浏览器支持脚本,那么它不会显示出 noscript 元素中的文本。-->
<noscript>
<p>兄弟,你out了!感觉下载谷歌浏览器让你更舒畅!</p>
</noscript>
笔试
1.已知数A与B,由键盘输入AB的值,交换它们的值,并输出。
<script>
var A = prompt("请输入A的值","");
var B = prompt("请输入B的值","");
var tmp = A;
A = B;
B = tmp;
console.log("A:"+A+",B:"+B);
</script>
···