1. javascript的typeof返回哪些数据类型.
答案:string,boolean,number,undefined,function,object,symbol(第一无二的值)
基本数据类型: 字符串,数字,布尔值,undefined,null
引用数据类型: 对象,数组,函数,data等
注意: typeOf(NaN),结果是number,
使用isNaN(NaN) 结果是true,表示非有效数字;
2. 例举3种强制类型转换(显示转换)和2种隐式类型转换?
强制转换主要是Number,Boolean,String这三个函数
强制字符串转换为数字(parseInt整数,parseFloat浮点数,number整数或者浮点数)
强制转为字符串,toString()和String()。 只有String()可以把参数里的所有传值都转换为String类型,而toString()在转换null和undefined时会报错
强制转换:Boolean()函数,undefined, null, 0, NaN ‘’, 都是false,其他都是true;
隐式类型转换:
隐式(== ===)
3. split() join() 的区别
答案:split() 是将字符串切割成数组的形式,join()后者是将数组转换成字符串
join()后者是将数组转换成字符串
重点看:
数组,先转为字符串,一般通过添加.split(“”)把每一项都添加“”, reverse反转后,
在通过添加.join(“”),把每一项的“”去掉;
分析:必须是字符串.split(“”), 才可以每一项都添加“”;
只有每一项都添加了“”, 才可以时候用reverse反转;
反转后,想去掉“”, 用join(“”), 就可以啦;
4. 闭包是什么,有什么特性,对页面有什么影响
答案:闭包就是能够读取其他函数内部变量的函数。 使得函数不被GC回收,如果过多使用闭包,容易导致内存泄露
个人理解: 闭包,函数a中创建一个函数b, 函数b可以访问函数a中的变量,这就是闭包。
闭包的好处: (1)希望一个变量长期驻扎在内存当中(不被垃圾回收机制回收; (2)避免全局变量的污染
(3)私有成员的存在(4)安全性提高
5. ””和“=”的不同
答案:前者会自动转换类型,再判断是否相等
后者不会自动类型转换,直接去比较
6. 看下面代码,给出输出结果。
答案:4 4 4。
原因:Javascript事件处理器在线程空闲之前不会运行。
回答以下代码,alert的值分别是多少?
正确答案是: 100, 10, 10
以下代码执行结果
分别alert出 undefined,lily,(变量声明提前问题)
7. Cookie/Session
Cookie通过在客户端记录信息确定用户身份,
Session通过在服务器端记录信息确定用户身份。
cookie和session的区别
具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,
由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。
8. 普通函数与箭头函数的区别
1.箭头函数没有原型 原型是undefined
2.箭头函数this指向全局对象 而函数指向引用对象
3.call,apply,bind方法改变不了箭头函数的指向
9. es6相关特性
阮一峰: https://es6.ruanyifeng.com/
10. 原型与原型链
原型
①所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象
②所有函数都有一个prototype(原型)属性,属性值是一个普通的对象
③所有引用类型的__proto__属性指向它构造函数的prototype
var a = [1,2,3];
a.__proto__ === Array.prototype; // true
原型链
当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,
则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,
如果还没有找到就会再在构造函数的prototype的__proto__中查找,
这样一层一层向上查找就会形成一个链式结构,我们称为原型链。
function Parent(month){
this.month = month;
}
var child = new Parent('Ann');
console.log(child.month); // Ann
console.log(child.father); // undefined
①一直往上层查找,直到到null还没有找到,则返回undefined
②Object.prototype.proto === null
③所有从原型或更高级原型中的得到、执行的方法,其中的this在执行时,指向当前这个触发事件执行的对象。
通俗易懂:一个对象有原型对象,它的原型对象也有自己的原型对象,一直往上找,找到Object对象,
Object对象的的原型对象是null,在往上就没了。这个像链式一样的结构称为原型链。
其本质描述的是对象的一种继承关系。
就是说一个对象是怎么来的,是继承自它的原型对象。
所以说绝大多数对象,其实都是继承自Object这个构造函数的原型对象,为什么是大多数,因为我们可以通过修改构造函数的原型来破坏这种继承关系,可以,但没必要
<script>
class Animal {
hand = true;
eat = function(){
console.log("吃点东西");
}
}
class People extends Animal{
say = function(){
console.log("说点什么吧");
}
}
let cat = new Animal()
console.log(cat._proto_ === Animal.prototype); // true
console.log(cat._proto_._proto_ === Object.prototype); // true
console.log(cat._proto_._proto_._proto_); // null
// 继承关系:cat --> Animal.prototype --> Object.prototype --> null
</script>
分析:
- 所有的引用类型都有一个’_ _ proto_ _'属性(也叫隐式原型,它是一个普通的对象)。
- 所有的函数都有一个’prototype’属性(这也叫显式原型,它也是一个普通的对象)。
- 所有引用类型,它的’_ _ proto_ _'属性指向它的构造函数的’prototype’属性。
11.JSON.parse()与JSON.stringify()
JSON.parse()转换为JS对象
SON.stringify() 转换为json对象
未完待续!!!!!
- 看下列代码,输出什么?解释原因。
var a = null;
alert(typeof a);
答案:object
解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回”object”。
- null和undefined的区别?
null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
当声明的变量还未被初始化时,变量的默认值为undefined。 null用来表示尚未存在的对象
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2)调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
null表示"没有对象",即该处不应该有值。典型用法是:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
- Cookie在客户机上是如何存储的
Cookies就是服务器暂存放在你的电脑里的文本文件,好让服务器用来辨认你的计算机。当你在浏览网站的时候,
Web服务器会先送一小小资料放在你的计算机上,
Cookies 会帮你在网站上所打的文字或是一些选择都记录下来。当下次你再访问同一个网站,
Web服务器会先看看有没有它上次留下的Cookies资料,有的话,就会依据Cookie里的内容来判断使用者,
送出特定的网页内容给你。
- 如何获取javascript三个数中的最大值和最小值?
Math.max(a,b,c);//最大值
Math.min(a,b,c)//最小值
-
javascript是面向对象的,怎么体现javascript的继承关系?
使用prototype原型来实现。 -
列举javaScript的3种主要数据类型,2种复合数据类型和2种特殊数据类型。
主要数据类型:string, boolean, number
复合数据类型:function, object
特殊类型:undefined,null
- 程序中捕获异常的方法?
try{
}catch(e){
}finally{
}
31. Ajax原理
(1)创建对象
var xhr = new XMLHttpRequest();
(2)打开请求
xhr.open(‘GET’, ‘example.txt’, true);
(3)发送请求
xhr.send(); 发送请求到服务器
(4)接收响应
xhr.onreadystatechange =function(){}
(1)当readystate值从一个值变为另一个值时,都会触发readystatechange事件。
(2)当readystate==4时,表示已经接收到全部响应数据。
(3)当status ==200时,表示服务器成功返回页面和数据。
(4)如果(2)和(3)内容同时满足,则可以通过xhr.responseText,获得服务器返回的内容。
- 解释什么是Json:
(1)JSON 是一种轻量级的数据交换格式。
(2)JSON 独立于语言和平台,JSON 解析器和 JSON 库支持许多不同的编程语言。
(3)JSON的语法表示三种类型值,简单值(字符串,数值,布尔值,null),数组,对象
-
js中的3种弹出式消息提醒(警告窗口,确认窗口,信息输入窗口)的命令式什么?
alert
confirm
prompt -
浏览器的滚动距离:
可视区域距离页面顶部的距离
scrollTop=document.documentElement.scrollTop||document.body.scrollTop
- 可视区的大小:
(1)innerXXX(不兼容ie)
window.innerHeight 可视区高度,包含滚动条宽度
window.innerWidth 可视区宽度,包含滚动条宽度
(2)document.documentElement.clientXXX(兼容ie)
document.documentElement.clientWidth可视区宽度,不包含滚动条宽度
document.documentElement.clientHeight可视区高度,不包含滚动条宽度
- 节点的种类有几种,分别是什么?
(1)元素节点:nodeType ===1;
(2)文本节点:nodeType ===3;
(3)属性节点:nodeType ===2;
- innerHTML和outerHTML的区别
innerHTML(元素内包含的内容)
outerHTML(自己以及元素内的内容)
- offsetWidth offsetHeight和clientWidth clientHeight的区别
(1)offsetWidth (content宽度+padding宽度+border宽度)
(2)offsetHeight(content高度+padding高度+border高度)
(3)clientWidth(content宽度+padding宽度)
(4)clientHeight(content高度+padding高度)
-
If
-
IF
-当判断对象为无初始值或者其值为 0、-0、null、“”、false、undefined 或者 NaN时,if判断出来是false,加上!就是取反,即为true -
目录
./是当前目录 …/是父级目录 /是根目录 -
Git
一、拉取最新代码: git pull
二、提交到暂存区:
1. 提交工作区所有文件到暂存区:git add .
三、提交文件到版本库
将暂存区中的文件提交到本地仓库中,即打上新版本:git commit -m “commit”;
Git commit -m”xxx”
将所有已经使用git管理过的文件暂存后一并提交,跳过add到暂存区的过程:git commit -a -m "commit";
提交文件时,发现漏掉几个文件,或者注释写错了,可以撤销上一次提交:git commit --amend;
四、推送
git Push