HTML中引用js
①在HTML中写< script>< /script>
②引用外部文件< script src="js文件路径">< /script>
变量声明都用var,且变量所占内存大小随每次的赋值大小而动态变化
变量的提升(变量使用前未定义的处理)
%运算结果的符号位为第一个变量的符号
||和&&的特性,所以有赋值操作不要写在表达式中,而应写在前面或后面
NaN不能识别的number类型变量值,Infinity代表无穷(1/0)
instanceof的用法,typeof的用法,基础类型值拷贝,object类型的创建方式,默认的方法(valueOf、toString等)
object类型的访问方式(①”obj.xxx”②”obj[“xxx”]”)
关于声明的提升(结合变量提升)
//一个栗子,自己去试结果
console.log(typeof value)
var value; //undefined
function value(){ //function
}
//第一个栗子扩展版,自己去试结果
console.log(typeof value)
var value = "我很弱,不能提升?"; //undefined
function value(){ //function
}
//第二个栗子
var value = function(){
alert("惊不惊喜?")
};
function value(){
alert("意不意外?")
}
value();
//第二个栗子的实际流程版
var value ;
function value(){
alert("意不意外?")
}
//var value;位置随意,只要不放在函数里面,所产生的效果都相同
value = function(){
alert("惊不惊喜?")
};
value();
下面介绍声明的提升:
function value(){}其实就是声明一个函数,而var value是声明一个变量,所以都要提升,这时var则提升到function前面。那么为什么第一个栗子扩展版中的结果是string呢(提示:声明和赋值是两步操作,声明会提升)
//说多都是废话,吃透下面代码也就能完全理解了
console.log(typeof value);
var value = "我被赋值了"; //undefined
console.log(typeof value)
function value(){ //function
}
作用域:
局部变量:var关键字定义在函数内部的变量
关于传参
这里以此为蓝本去分析,实参和形参数不一致的处理
function add(){
for (var i=0;i<arguments.length;i++) {
console.log(typeof arguments[i])
}
}
add([1,2,3],{name:123},123,true,"hello");
关于this指代内容的心得
谁调用的函数就指代谁,比如"对象.函数名(参数列表);"那么这个函数中的this 就指代这个对象(对象包含所有引用类型)。
如果执行函数时没有调用者,则调用者就是内建对象global(也就是window,PS:js中内建对象有window和Math可以直接使用其中的属性方法)
关于this作参数,
//几个杂乱的栗子
function outFn(){
num = 1111;
function innerFn(obj){
console.log(obj);
}
innerFn(this);//想要输出outFn的内容
}
outFn() //es6会输出undefined,es5应该会输出代表window的this
/*函数是对象,而对象具有属性或方法,所以有下面解决方法*/
outFn.fn = outFn; //给函数对象添加方法
outFn.fn(); //输出结果是outFn这个对象,因为是outFn调用的函数
delete outFn.fn; //清除附加的方法,fn的取名不要与其他重名
/*上面的栗子仔细研究,this指代的内容就应该比较好理解了吧*/
/**下面提供一个测试栗子*/
(function(obj){
this.num = 1000;
console.log(this)
})(this);
//相当于执行
function fn(obj){
this.num = 1000;
console.log(this)
}
fn(this)//怎么才能输出fn呢?
系统提供了call/apply方法动态绑定以及bind方法静态绑定