Python web前端 07 函数及作用域

一、函数

  1、有名函数和匿名函数

  1. #函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块
  2. #函数就是包裹在花括号里面的代码块,前面使用了关键字function
  3.  
  4. #分为有名函数和匿名函数
  5. #有名函数:有名字的函数,函数名加括号执行/充当事件函数执行
  6. #匿名函数:没有名字的函数,匿名函数不能单独出现,一般充当事件函数
  7.  
  8. oBox.onclinck=function(){..};
  9. oBox.onclinck=fn;#这两个是一样的,后面的函数就是fn

  2、函数定义和函数表达式

  1. #函数表达式 特点:可以在后面加括号立即执行
  2.  
  3. fn();
  4. function fn{ console.log(1);}
  5. #函数定义可以在定义前加括号执行,也可以在定以后加括号执行
  6.  
  7. fn();
  8. var fn=function(){console.log(2);}
  9. #通过var定义的函数,只能在后面运行
  10.  
  11. #() + - ! ~ 可以将匿名函数变为函数表达式
  12. function(){alert(3);}#匿名函数
  13. +function(){alert(3);}();#前面加了+(() + - ! ~ )变为函数表达式,后面加上()便是调用
  14. (function(){alert(3);})();
  15. (function(){alert(3);}());#这两种加括号都可以

  3、实参形参

  1. #在使用函数时,加括号导致的函数执行时,可以传递参数(形参、实参、不定参)
  2.  
  3. function fn(x){
  4. alert(x);
  5. }
  6. fn(8);#执行函数时可以传递实参【用已知的变量(形参)或者具体的数据(实参)】
  7. #形参:相当于函数局部的变量,命名规则和var相同,定义,无中生有
  8.  
  9. #很多个参数的情况
  10. sum(4,9);
  11. function sum(q,w){
  12. alert(g+w);
  13. }#形参和实参一一对应
  14.  
  15. #形参和实参数量不一样的情况
  16. #实参大于形参
  17. sum(4,9,3,5);
  18. function sum(q,w,e){
  19. alert(g+w+e);
  20. }#可以运行,最后面的实参没有用
  21.  
  22. #形参大于实参
  23. sum(4,9);
  24. function sum(q,w,e){
  25. alert(g+w+e);
  26. }#出现NaN,传参的时候依次是q=3,w=9e=undefined
  27.  
  28. #可以给形参添加默认值
  29. sum(4,9);
  30. function sum(q,w){
  31. q=q||0;#设置默认值,q或者0
  32. w=w||0;
  33. alert(g+w);
  34. }

  4、不定参

  1. sum(1,2,3,4,5,6,7,8,9,10);
  2. function sum(){
  3. var x=0;
  4. for(var i = 0,len=arguments.length;i<len;i++){
  5. x+=arguments[i];#将每个参数相加
  6. }
  7. console.log(x);
  8. }

  5、返回值return

  1. function fn(){
  2. console.log(2);
  3. return fn;#返回fn函数
  4. }#每个函数默认返回undefined
  5.  
  6. var a=fn;
  7. console.log(a);

二、作用域

  1、解析顺序

  1. #1、(定义)先解析var function参数
  2. # a、该步骤的var只定义变量,后面的=赋值不解析
  3. # b、该步骤的函数只定义函数,函数的执行不解析
  4. # c、重名的只留一个、var和函数重名 函数优先
  5. #2、(执行)在自上往下执行其他代码
  6.  
  7. #作用域:
  8. #作用:读写 域:范围,区域
  9. #解析:自上而下 1、找var定义函数 参数 2、执行

  2、

  1. alert(a);
  2. var a=10;
  3. alert(a);
  4.  
  5. #1、找
  6. var a=undefined==>a=10(将库里面的a替换为10)
  7. #2、执行
  8. alert(a)==>undefined
  9. a=10
  10. alert(a)==>10

  3、

  1. alert(a);
  2. function a(){
  3. alert(1);
  4. }
  5. alert(a);
  6.  
  7. #1、找
  8. a=function a(){
  9. alert(1);
  10. }
  11. #2、执行
  12. alert(a);#弹出函数体
  13. #定义没调用,所以没关系
  14. alert(a);#弹出函数体

  4、

  1. alert(a);
  2. function a(){
  3. alert(4);
  4. }
  5. a();
  6. alert(a);
  7.  
  8. #1、找
  9. a=function a(){
  10. alert(4);
  11. }
  12. #2、执行
  13. alert(a);#弹出函数体
  14. a();#函数调用是新的作用域,只要是作用域,解析就要分两步
  15. #1、找 :找不到
  16. #2、执行: alert(4);==>4
  17. alert(a);#弹出函数体

  5、

  1. alert(a);
  2. function a(){
  3. alert(2);
  4. }
  5. var a=520;
  6. alert(a);
  7.  
  8. #1、找(函数优先)
  9. a=function a(){
  10. alert(2);
  11. }
  12. #2、执行
  13. alert(a);#弹出函数体
  14. a=520;
  15. alert(a);#弹出520

  6、

  1. var a=1;
  2. function fn(){
  3. alert(2);
  4. var a=3;
  5. }
  6. fn();
  7. alert(a);
  8.  
  9. #1、找
  10. a=undefined==》1
  11. fn=function fn(){
  12. alert(2);
  13. var a=3;
  14. }
  15. #2、执行
  16. fn();#找 a=undefined
  17. #执行:alert(2);弹出 2
  18. #a=3
  19. alert(a); #弹出1#上面的函数只会改变函数里面的a,外面的改变不了

  7、

  1. var a=1;
  2. function fn(){
  3. alert(2);
  4. a=3;
  5. }
  6. fn();
  7. alert(a);
  8.  
  9. #找
  10. a=undefined
  11. fn=function fn(){
  12. alert(2);
  13. a=3;
  14. }
  15. #执行
  16. var a=1;#赋值a
  17. fn();#找:没找到
  18. #执行:alert(2); 弹出2
  19. # a=3;会去父级作用域找,从里往外找,会将外面的全局变量a赋值为3
  20. alert(a);弹出3

  8、

  1. var a=1;
  2. function fn(a){
  3. alert(2);
  4. a=3;
  5. }
  6. fn();
  7. alert(a);
  8.  
  9. #找
  10. a=undefined
  11. fn=function fn(a){
  12. alert(2);
  13. a=3;
  14. }
  15. #执行
  16. a=1
  17. fn();#找:a=undefined 原因是有形参的时候了会定义个a
  18. #执行 alert(a);弹出 2
  19. #a=3 #赋值3
  20. alert(a); #弹出1 里面的影响不了外面的

  9、

  1. var a=1;
  2. function fn(a){
  3. alert(2);
  4. a=3;
  5. }
  6. fn(a);
  7. alert(a);
  8.  
  9. #找
  10. a=undefined
  11. fn=function fn(a){
  12. alert(2);
  13. a=3;
  14. }
  15. #执行
  16. a=1;
  17. fn(a);#找a=undefined
  18. #执行 fn(1);(相当于var a=1)
  19. #alert(2);
  20. #a=3
  21. alert(a); #弹出1

  10、

  1. var a=function(){
  2. alert(1);
  3. }
  4. function a(){
  5. alert(2);
  6. }
  7. a();
  8.  
  9. #找
  10. a=function a(){
  11. alert(2);
  12. }
  13. #执行
  14. a=function(){
  15. alert(1);
  16. }
  17. a();#找 :无
  18. #执行alert(1); 弹出1

三、数据类型

  number方法

  1. Number() #参数中必须能被转换为数字,否则返回NaN
  2.  
  3. parseInt(解析的参数) #将参数转换位数字,只打印整数部分
  4.  
  5. parseFloat() #将参数转换位数字,不是数字就停,否则直到小数部分遇到不是数字就停
  6.  
  7. Num.toFixed(n) # 四舍五入保留n位小数
  8.  
  9. NaNNot a Number #不等于自己

  数学方法

  1. Math #数学方法
  2. Math.pow(16,2) #16的2次方
  3. Math.round(5.5) #四舍五入(整数)
  4. Math.ceil(0.2) #向上取整
  5. Math.floor(0.9) #向下取整
  6. Math.max() #取参数中的最大值
  7. Math.min() #取参数中的最小值
  8. Math.random() #0-1之间的随机数
  9. Math.random()*m+n #n-(m+n)之间的随机数
  10. Math.PI # π
  11. Math.abs() #求绝对值

Python web前端 07 函数及作用域的更多相关文章

  1. Python web前端 05 JavaScript

    Python web前端 05 JavaScript 一.获取元素 1.初识JavaScript /* .. */ #这是多行注释 // #这是单行注释 #JavaScript是一种脚本语言,是一种动 ...

  2. Python web前端 06 运算符 循环

    Python web前端 06 运算符 循环 一.运算符 #JS六大数据类型 #number 数字 #string 字符串 #boolean 布尔型 #function 函数 #undefined 未 ...

  3. Python web前端 09 jQuery

    Python web前端 09 jQuery 一.三个重要网址 http://jquery.cuishifeng.cn/ #中文查询网站 http://www.bootcdn.cn/ #引入jq ht ...

  4. Python web前端 08 字符串 数组 json

    Python web前端 08 字符串 数组 json 一.string #string 字符串 #索引 下标 偏移量 ---从0开始 str[index]; #通过索引取字符串 可读不可写 str. ...

  5. Python web前端 01 HTML常用标签

    Python web前端 01 HTML常用标签 一.HTML创建项目 file ---->new project -----> 输入项目名------>创建文件夹 new dicr ...

  6. Python web前端 02 CSS

    Python web前端 02 CSS 一.选择器 1.CSS的几种样式(CSS用来修饰.美化网页的) #建立模板 复制内容--->SETTING---> Editor -----> ...

  7. Python web前端 03 CSS属性

    Python web前端 03 CSS属性 一.文字.文本属性 1.文字属性 font-family #字体类型浏览器默认的字体是微软雅黑,字体中有多个字体的时候,如果前面的字体没有就使用后面的字体 ...

  8. Python web前端 04 盒子模型

    Python web前端 04 盒子模型 盒子模型是由内容(content).内边距(padding).外边距(margin).边框(border)组成的 一.边框 border #border 边框 ...

  9. Python web前端 11 form 和 ajax

    Python web前端 11 form 和 ajax 一.打开服务器 将handlers.py.httpd.py和libs.py三个文件放入新文件夹中,双击打开httpd.py文件即可 二.ajax ...

随机推荐

  1. js 事件冒泡、事件捕获及事件委托

    简介 事件冒泡:从触发事件的节点一直到document,自下而上的去触发事件. 事件捕获:从document到触发事件的节点,自上而下的去触发事件. 事件委托:事件委托就是利用事件冒泡,只指定一个事件 ...

  2. 刷题向》POJ2823 单调队列裸题(<不会做,请自裁>系列)

    最近BZOJ炸了,而我的博客上又更新了一些基本知识,所以这里刷一些裸题,用以丰富知识性博客 POJ2823   滑动的窗口 这是一道经典的单调队题,我记得我刚学的时候就是用这道题作为单调队列的例题,算 ...

  3. 32.GROUP BY

    合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句. GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. SQL GROUP BY 语法 ...

  4. 如果你的资源贫乏,那么专注做好一件事将是你的唯一出路(no reading yet)

    http://www.jianshu.com/p/8784f0fd7ab8/comments/1161511

  5. JPA注解解析

    最近学习hibernate注解形式配置POJO类,将注解的解析记下来,以备以后使用. 例1. @Entity@Table(name="user")  public class Fl ...

  6. 一些webGL地球的网址

    测试浏览器的webgl支持情况:https://browserleaks.com/webgl 或者 https://github.com/AnalyticalGraphicsInc/webglrepo ...

  7. Android 基于google Zxing实现对手机中的二维码进行扫描

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/14450809 有时候我们有这样子的需求,需要扫描手机中有二维码的的图片,所以今天实现的 ...

  8. PrintDocument or PrintPreviewDialog 打印

    /// <summary> /// /// </summary> /// <param name="sender"></param> ...

  9. c# 求数组的最大值

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. vs2017安装后自动应用许可证

    Vs2017专业版 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\StorePI ...