函数返回值
return可以改变函数内部的"返回值". 1.一个函数执行完之后,默认的返回值是undefined,function x(){ return 111; } //函数自执行,内部运行return就是函数的返回值 console.log( x() );输出到页面中:document.write
function sum(a,b){ return a + b; } //实参传入形参,打印公式返回值 console.log( sum(4, 5) ** 2 );2.函数执行到return,函数就立即结束,不再往后执行. 3.起作用离他最近的函数,后面代码不执行
function x( a ){ if (a<10){ return a; } return a * 2; } console.log( x(9) ); console.log( x(20) ); console.log( x(30) );
使用有名函数作为页面事件点击返回值时,只需用函数名赋值
//函数名赋值 let a = 0; function fn(){ a ++; console.log(a); } document.onclick = fn; //函数名自执行 let a = 10 function fn(){ return function(){ a ++; console.log(a); } } document.onclick = fn();
函数中各种this指向
//全局作用域中,this指向window console.log(this);//window function x(){ console.log(this); } //变量函数自执行,this指向window x();//window //函数表达式自执行,this指向window (function(){ console.log(this);//window })(); //事件函数的this指向事件对应的节点对象 /*document.onclick = function(){ console.log(this); };*/ let obj = { name : "Fly", age : 18, say : function(){ console.log(this); } }; //对象的方法自执行时,this指向该对象 obj.say(); //但是如果用来充当事件函数,this还是按照事件函数的规则,指向节点对象 document.onclick = obj.say;
修改this的指向
//call , apply 都是自执行 let obj = { n : "Fly", a : 16 }; function fn( a,b ){ console.log(a+b,this); } // fn();//window //传入的第一个实参,往后依次传入的形参,代表this指向 fn.call( obj,2,3 ); //传入一个数组里,依次对应形参 fn.apply( obj,[3,4] ); //bind不会主动执行,被动执行 let obj = {a:1,b:2}; let fn = function(){ console.log(this); }; //bind不会主动执行,被动执行 document.onclick = fn.bind(obj);
基础数据类型:栈内存, 复杂数据类型:堆内存
/*let a = 10; let b = 10; console.log(a === b); //true let c = {n:1}; let d = {n:1}; console.log(c === d);*///false let e = {h:10}; let f = e; //引用关系 // console.log(e === f);//true f.g = 20; console.log(e);
typeof 用来检测 数据的 数据类型
console.log( typeof 10 ); //"number" console.log( typeof "10" ); //"string" console.log( typeof true ); //"boolean" console.log( typeof undefined ); //"undefined" console.log( typeof {} ); //"object" console.log( typeof [] ); //"object" console.log( typeof window ); //"object" //比较特殊的 console.log( typeof null ); //"object" console.log( typeof function(){} ); //"function" console.log(typeof typeof 10);//"string"
alert的各种弹窗
// alert( 10 ); // alert( "哈哈哈" ); // alert( true ); // alert( undefined ) // alert( null ) // alert( [1,2,3] ); // 数组的内容1,2,3 // alert( {a:10} ); // 对象变成字符串[object Object] //函数弹窗,写的什么样就是什么样 function fn(){ let a = 10; let b = 20; return a+b; } alert( fn );