对象中的方法运行:
现将要打印的值赋值给一个变量fn再打印运行时为undefined;
直接点语法运行方法并打印可得到结果;
直接打印getCount()时会报错;
var User = {
count: 1,
getCount: function() {
return this.count//window.count
}
}
var fn = User.getCount
console.log(fn());//undefind
console.log(User.getCount());//可运行
对于两个参数的函数 分别传参的情况:
var a=fun(0)
a.fun(1)
a.fun(2)这样的传参运行方式为独立作用域运行 fun(1)和fun(2)都是接着fun(0)运行
下面的运行方式为同一作用域都是接着上一个的运行结果运行
var b = fun(0).fun(1).fun(2).fun(3)
function fun(n, o) {
console.log(o)
console.log(n,o);
return {
fun: function (m) {
return fun(m, n);
}
};
}
var a = fun(0);//fun(0,o) n=0 o=undefined
a.fun(1);//fun(m,n)-->fun(1,0) 每一个a.fun都是独立作用域
a.fun(2);//fun(m,n)-->fun(2,0)
a.fun(3);//fun(m,n)-->fun(3,0)
var b = fun(0).fun(1).fun(2).fun(3); //(0,o)-->(1,0)-->(2,1)-->(3,2)
var c = fun(0).fun(1);//--(1,0)
c.fun(2);//(2,1)从这里开始接着fun(0).fun(1)的值
c.fun(3);//(3,1)
关于回调函数的案例:
分别传入三个参数 第三个参数传入一个函数
将前两个参数传入res对象中
再用第三个参数传入的函数打印出来
function axios(selector, url, callback) {
var res = {
tag: selector,
data: url
}
callback(res.tag,res.data)
};
axios("box1", "http://www.baidu.com", function (arg1, arg2) {
console.log(arg1, arg2);
})
关于全局和局部作用域:
在函数中var a=b=3 表示:
var a ; b=3 ;a=b
有了var声明的a是函数中的局部变量 b=3没有var为全局变量 最后把b的值赋值给a
在外面打印a,b只有b可以打印出3因为b是全局 a是局部 全局下不能打印局部变量
(function (){
var a=b=3
//b=3全局 隐式
//var a=3局部
})()
console.log(a,b)
字符串与数字的加减法:
数字类型字符串+数字=字符串
数字类型字符串-数字=数字
var a=''+3//a为字符串
var b=4
console.log(a+b);//"34" b被转化为字符串 数值类型的字符串跟数字加法 还是字符串
console.log(a-b);//-1 数值类型的字符串跟数字减法运算 得出数字