经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
JavaScript(七)-函数的拓展
来源:cnblogs  作者:小衣  时间:2021/1/11 9:34:39  对本文有异议

函数返回值

return可以改变函数内部的"返回值".
1.一个函数执行完之后,默认的返回值是undefined,
 
  1. function x(){
  2. return 111;
  3. }
  4. //函数自执行,内部运行return就是函数的返回值
  5. console.log( x() );
输出到页面中:document.write
  1. function sum(a,b){
  2. return a + b;
  3. }
  4. //实参传入形参,打印公式返回值
  5. console.log( sum(4, 5) ** 2 );
2.函数执行到return,函数就立即结束,不再往后执行.
3.起作用离他最近的函数,后面代码不执行
  1. function x( a ){
  2. if (a<10){
  3. return a;
  4. }
  5. return a * 2;
  6. }
  7. console.log( x(9) );
  8. console.log( x(20) );
  9. console.log( x(30) );

使用有名函数作为页面事件点击返回值时,只需用函数名赋值

  1. //函数名赋值
  2. let a = 0;
  3. function fn(){
  4. a ++;
  5. console.log(a);
  6. }
  7. document.onclick = fn;
  8. //函数名自执行
  9. let a = 10
  10. function fn(){
  11. return function(){
  12. a ++;
  13. console.log(a);
  14. }
  15. }
  16. document.onclick = fn();

函数中各种this指向

  1. //全局作用域中,this指向window
  2. console.log(this);//window
  3.  
  4.  
  5. function x(){
  6. console.log(this);
  7. }
  8. //变量函数自执行,this指向window
  9. x();//window
  10.  
  11.  
  12. //函数表达式自执行,this指向window
  13. (function(){
  14. console.log(this);//window
  15. })();
  16. //事件函数的this指向事件对应的节点对象
  17. /*document.onclick = function(){
  18. console.log(this);
  19. };*/
  20. let obj = {
  21. name : "Fly",
  22. age : 18,
  23. say : function(){
  24. console.log(this);
  25. }
  26. };
  27. //对象的方法自执行时,this指向该对象
  28. obj.say();
  29. //但是如果用来充当事件函数,this还是按照事件函数的规则,指向节点对象
  30. document.onclick = obj.say;

修改this的指向

  1. //call , apply 都是自执行
  2. let obj = {
  3. n : "Fly",
  4. a : 16
  5. };
  6. function fn( a,b ){
  7. console.log(a+b,this);
  8. }
  9. // fn();//window
  10. //传入的第一个实参,往后依次传入的形参,代表this指向
  11. fn.call( obj,2,3 );
  12. //传入一个数组里,依次对应形参
  13. fn.apply( obj,[3,4] );
  14. //bind不会主动执行,被动执行
  15. let obj = {a:1,b:2};
  16. let fn = function(){
  17. console.log(this);
  18. };
  19. //bind不会主动执行,被动执行
  20. document.onclick = fn.bind(obj);

基础数据类型:栈内存, 复杂数据类型:堆内存

  1. /*let a = 10;
  2. let b = 10;
  3. console.log(a === b); //true
  4. let c = {n:1};
  5. let d = {n:1};
  6. console.log(c === d);*///false
  7. let e = {h:10};
  8. let f = e; //引用关系
  9. // console.log(e === f);//true
  10. f.g = 20;
  11. console.log(e);

typeof 用来检测 数据的 数据类型

  1. console.log( typeof 10 ); //"number"
  2. console.log( typeof "10" ); //"string"
  3. console.log( typeof true ); //"boolean"
  4. console.log( typeof undefined ); //"undefined"
  5. console.log( typeof {} ); //"object"
  6. console.log( typeof [] ); //"object"
  7. console.log( typeof window ); //"object"
  8.  
  9. //比较特殊的
  10. console.log( typeof null ); //"object"
  11. console.log( typeof function(){} ); //"function"
  12. console.log(typeof typeof 10);//"string"

alert的各种弹窗

  1. // alert( 10 );
  2. // alert( "哈哈哈" );
  3. // alert( true );
  4. // alert( undefined )
  5. // alert( null )
  6.  
  7. // alert( [1,2,3] ); // 数组的内容1,2,3
  8. // alert( {a:10} ); // 对象变成字符串[object Object]
  9.  
  10. //函数弹窗,写的什么样就是什么样
  11. function fn(){
  12. let a = 10;
  13. let b = 20;
  14. return a+b;
  15. }
  16. alert( fn );

 

原文链接:http://www.cnblogs.com/yhy-blog/p/14260375.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号