JavaScript学习笔记

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方法静态绑定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值