1,用本身的语言描述出,什么是对象、类、封装、聚合、继承、多态?css
对象,拥有属性和方法的任何抽象概念。 类,能够实例化,有共同属性或方法(行为)的类似对象,的模板 封装,提供接口,隐藏接口的实现 聚合,将大功能(对象)拆分红小功能(小对象)去实现的逆过程。 继承,子类经过继承得到父类的方法或属性 重写,子类继承父类的方法,改为本身的实现。 多态,、对传递的参数判断来执行逻辑,一种多态处理机制
1,在控制台输入表达式后,返回undefined缘由:segmentfault
有时可能会看到某个表达式在控制台中的输出,结果为 undefined。为何这些表达式会输出 undefined 呢? 控制台在执行完输入的表达式后,输出的该表达式运行结果,若是表达式没有返回值,undefined,不然返回返回值。
2, css 中颜色表示的两种方式数组
rgb(0,0,0) 黑色 rgb(255,0,0) 红色 \#ff0000 红色 三基色的顺序都是 red,green,blue
3, 为何返回结果不一致,a为啥不是NaN呢?闭包
参考提问 https://segmentfault.com/q/1010000014772302 var a = 9/0; typeof a; "number" a; Infinity typeof 9/0; NaN
4,类型转换函数
将数字字符串转成数字,*1, 转换失败NaN 其余类型转为字符串,+"" var s = '100'; s=s*1; typeof s;
5,哪些值双重取反后,返回false?编码
“”,undefined, null, 0, NaN, false "0", "false", " " 为 true
6,null和undefined区别之一url
在转成布尔值类型时候一致 在转为数字类型的数值时,会有区别 Number(null) 0, Number(undefined) NaN 1*null = 0; 1+null = 1; 1*undefined = NaN; 1+undefined = NaN;
7,判断一个元素是否初始化。code
检查变量是否存在。 咱们通常不判断是,判断不是 在判断元素是否存在时候,最好使用typeof
if(somevar){ balabal } //若是没有定义会有警告 if(typeof somevar !=='undefined'){ balabala }
1,函数返回值对象
一个函数只能有一个返回值,若是有多个返回值,使用数组的形式返回。 return 子句,返回值,就是函数的返回值。
2,函数的参数,传到方法中的究竟是什么值?继承
函数声明时候,会设置函数的参数,若是调用时候没有传递相关的参数值,js默认为undefined
function sum(a,b){ return a+b; } sum(1); //NaN 少了,默认undefined 多了,忽略多传的参数。
3, 形参长度和实参长度的区别
arguments.length 是实参的长度,调用函数时候,像函数传递了几个参数的长度. arguments.callee.length = function.length 形参的长度。
function sum(a,b,c){ console.log(arguments.length); return a+b+c; } sum(1,2,3,4,5); 5 sum.length; 3
function sum(a=1,b,c){ console.log(arguments.length); } sum(1,2,3,4,5); 5 sum.length; 为啥是0? 0????????
4, 预约义函数
parseInt 将接受的任何值,转成整数类型输出。失败,返回NaN。 parseFloat 只支持将输入值转换成十进制数,该函数只有一个参数。 isFinite(Infinity) //false 是不是有限的,Infinity无限的。
5, encodeURI 和 encodeURIComponent的区别;
它用于对URL的组成部分进行个别编码。 后者对整个url进行编码,包括一些特殊字符。
6,函数声明和函数表达式
function a() //声明 var a = function() //函数表达式
7,匿名函数
7.1回调函数 何时执行回调函数?将函数c传递给函数A,由函数A来执行函数c就造成回调函数。 示例:将一个函数的返回值传递给另外一个函数。
function add(a){ return a+1; } function(arr, callback){ for(var i = 0;i<arr.length;i++){ arr[i] = callback(arr[i]*2); } }
7.2当即执行函数
// 两种写法 (function(){})(); (function(){}()) //第二种写法总是忘记 //优势:不会产生任何全局变量。
7.3 修改自身的函数
function a (){ alert(1); a= function(){ alert(2); } } //第一次执行和第二次执行就不同了
返回函数的函数
function a (){ alert(1); return function(){ alert(2); } } a()();
复习:闭包返回当前值的缘由, 如何解释循环闭包打印出来是数组长度?
每一个数组都指向了一个共同的局部变量i,可是闭包不会记录i的值,只是拥有在相关域建立时候的一个引用,执行的时候,会从所在域逐级寻找最近的i值,for循环结束后,都指向了那个共同的值。