Python web前端 07 函数及作用域
Python web前端 07 函数及作用域
一、函数
1、有名函数和匿名函数
#函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块
#函数就是包裹在花括号里面的代码块,前面使用了关键字function #分为有名函数和匿名函数
#有名函数:有名字的函数,函数名加括号执行/充当事件函数执行
#匿名函数:没有名字的函数,匿名函数不能单独出现,一般充当事件函数 oBox.onclinck=function(){..};
oBox.onclinck=fn;#这两个是一样的,后面的函数就是fn
2、函数定义和函数表达式
#函数表达式 特点:可以在后面加括号立即执行 fn();
function fn{ console.log(1);}
#函数定义可以在定义前加括号执行,也可以在定以后加括号执行 fn();
var fn=function(){console.log(2);}
#通过var定义的函数,只能在后面运行 #() + - ! ~ 可以将匿名函数变为函数表达式
function(){alert(3);}#匿名函数
+function(){alert(3);}();#前面加了+(() + - ! ~ )变为函数表达式,后面加上()便是调用
(function(){alert(3);})();
(function(){alert(3);}());#这两种加括号都可以
3、实参形参
#在使用函数时,加括号导致的函数执行时,可以传递参数(形参、实参、不定参) function fn(x){
alert(x);
}
fn(8);#执行函数时可以传递实参【用已知的变量(形参)或者具体的数据(实参)】
#形参:相当于函数局部的变量,命名规则和var相同,定义,无中生有 #很多个参数的情况
sum(4,9);
function sum(q,w){
alert(g+w);
}#形参和实参一一对应 #形参和实参数量不一样的情况
#实参大于形参
sum(4,9,3,5);
function sum(q,w,e){
alert(g+w+e);
}#可以运行,最后面的实参没有用 #形参大于实参
sum(4,9);
function sum(q,w,e){
alert(g+w+e);
}#出现NaN,传参的时候依次是q=3,w=9,e=undefined #可以给形参添加默认值
sum(4,9);
function sum(q,w){
q=q||0;#设置默认值,q或者0
w=w||0;
alert(g+w);
}
4、不定参
sum(1,2,3,4,5,6,7,8,9,10);
function sum(){
var x=0;
for(var i = 0,len=arguments.length;i<len;i++){
x+=arguments[i];#将每个参数相加
}
console.log(x);
}
5、返回值return
function fn(){
console.log(2);
return fn;#返回fn函数
}#每个函数默认返回undefined var a=fn;
console.log(a);
二、作用域
1、解析顺序
#1、(定义)先解析var function参数
# a、该步骤的var只定义变量,后面的=赋值不解析
# b、该步骤的函数只定义函数,函数的执行不解析
# c、重名的只留一个、var和函数重名 函数优先
#2、(执行)在自上往下执行其他代码 #作用域:
#作用:读写 域:范围,区域
#解析:自上而下 1、找var定义函数 参数 2、执行
2、
alert(a);
var a=10;
alert(a); #1、找
var a=undefined==>a=10(将库里面的a替换为10)
#2、执行
alert(a)==>undefined
a=10
alert(a)==>10
3、
alert(a);
function a(){
alert(1);
}
alert(a); #1、找
a=function a(){
alert(1);
}
#2、执行
alert(a);#弹出函数体
#定义没调用,所以没关系
alert(a);#弹出函数体
4、
alert(a);
function a(){
alert(4);
}
a();
alert(a); #1、找
a=function a(){
alert(4);
}
#2、执行
alert(a);#弹出函数体
a();#函数调用是新的作用域,只要是作用域,解析就要分两步
#1、找 :找不到
#2、执行: alert(4);==>4
alert(a);#弹出函数体
5、
alert(a);
function a(){
alert(2);
}
var a=520;
alert(a); #1、找(函数优先)
a=function a(){
alert(2);
}
#2、执行
alert(a);#弹出函数体
a=520;
alert(a);#弹出520
6、
var a=1;
function fn(){
alert(2);
var a=3;
}
fn();
alert(a); #1、找
a=undefined==》1
fn=function fn(){
alert(2);
var a=3;
}
#2、执行
fn();#找 a=undefined
#执行:alert(2);弹出 2
#a=3
alert(a); #弹出1#上面的函数只会改变函数里面的a,外面的改变不了
7、
var a=1;
function fn(){
alert(2);
a=3;
}
fn();
alert(a); #找
a=undefined
fn=function fn(){
alert(2);
a=3;
}
#执行
var a=1;#赋值a
fn();#找:没找到
#执行:alert(2); 弹出2
# a=3;会去父级作用域找,从里往外找,会将外面的全局变量a赋值为3
alert(a);弹出3
8、
var a=1;
function fn(a){
alert(2);
a=3;
}
fn();
alert(a); #找
a=undefined
fn=function fn(a){
alert(2);
a=3;
}
#执行
a=1
fn();#找:a=undefined 原因是有形参的时候了会定义个a
#执行 alert(a);弹出 2
#a=3 #赋值3
alert(a); #弹出1 里面的影响不了外面的
9、
var a=1;
function fn(a){
alert(2);
a=3;
}
fn(a);
alert(a); #找
a=undefined
fn=function fn(a){
alert(2);
a=3;
}
#执行
a=1;
fn(a);#找a=undefined
#执行 fn(1);(相当于var a=1)
#alert(2);
#a=3
alert(a); #弹出1
10、
var a=function(){
alert(1);
}
function a(){
alert(2);
}
a(); #找
a=function a(){
alert(2);
}
#执行
a=function(){
alert(1);
}
a();#找 :无
#执行alert(1); 弹出1
三、数据类型
number方法
Number() #参数中必须能被转换为数字,否则返回NaN parseInt(解析的参数) #将参数转换位数字,只打印整数部分 parseFloat() #将参数转换位数字,不是数字就停,否则直到小数部分遇到不是数字就停 Num.toFixed(n) # 四舍五入保留n位小数 NaN(Not a Number) #不等于自己
数学方法
Math #数学方法
Math.pow(16,2) #16的2次方
Math.round(5.5) #四舍五入(整数)
Math.ceil(0.2) #向上取整
Math.floor(0.9) #向下取整
Math.max() #取参数中的最大值
Math.min() #取参数中的最小值
Math.random() #0-1之间的随机数
Math.random()*m+n #n-(m+n)之间的随机数
Math.PI # π
Math.abs() #求绝对值
Python web前端 07 函数及作用域的更多相关文章
- Python web前端 05 JavaScript
Python web前端 05 JavaScript 一.获取元素 1.初识JavaScript /* .. */ #这是多行注释 // #这是单行注释 #JavaScript是一种脚本语言,是一种动 ...
- Python web前端 06 运算符 循环
Python web前端 06 运算符 循环 一.运算符 #JS六大数据类型 #number 数字 #string 字符串 #boolean 布尔型 #function 函数 #undefined 未 ...
- Python web前端 09 jQuery
Python web前端 09 jQuery 一.三个重要网址 http://jquery.cuishifeng.cn/ #中文查询网站 http://www.bootcdn.cn/ #引入jq ht ...
- Python web前端 08 字符串 数组 json
Python web前端 08 字符串 数组 json 一.string #string 字符串 #索引 下标 偏移量 ---从0开始 str[index]; #通过索引取字符串 可读不可写 str. ...
- Python web前端 01 HTML常用标签
Python web前端 01 HTML常用标签 一.HTML创建项目 file ---->new project -----> 输入项目名------>创建文件夹 new dicr ...
- Python web前端 02 CSS
Python web前端 02 CSS 一.选择器 1.CSS的几种样式(CSS用来修饰.美化网页的) #建立模板 复制内容--->SETTING---> Editor -----> ...
- Python web前端 03 CSS属性
Python web前端 03 CSS属性 一.文字.文本属性 1.文字属性 font-family #字体类型浏览器默认的字体是微软雅黑,字体中有多个字体的时候,如果前面的字体没有就使用后面的字体 ...
- Python web前端 04 盒子模型
Python web前端 04 盒子模型 盒子模型是由内容(content).内边距(padding).外边距(margin).边框(border)组成的 一.边框 border #border 边框 ...
- Python web前端 11 form 和 ajax
Python web前端 11 form 和 ajax 一.打开服务器 将handlers.py.httpd.py和libs.py三个文件放入新文件夹中,双击打开httpd.py文件即可 二.ajax ...
随机推荐
- ROS源码解读(一)--局部路径规划
博客转载自:https://blog.csdn.net/xmy306538517/article/details/78772066 ROS局部路径导航包括Trajectory Rollout 和 Dy ...
- Linux PulseAudio
一.简介 Linux的声音系统或许是最无序的子系统部分!作为Server来说,声音无足轻重,无人问津,而作为桌面来说太多的实现方案,各有各的长出和不足,ALSA经过多年的发展,基本统一了Linux声卡 ...
- Openssl genpkey命令
一.简介 genpkey命令用于产生各种密钥(RSA.DSA.DH.EC等)的私钥值. 二.语法 openssl genpkey [-out filename] [-outform PEM | DER ...
- lnmp+laravel部署到服务器出现 "GET / HTTP/1.1" 500 5
lnmp一键安装包直接下载安装,就可以了,在此不多说. 虚拟机配置给个参考(lnmp安装包) server { listen 80; #listen [::]:80; server_name www. ...
- Ajax——三种数据传输格式
一.HTML HTML由一些普通文本组成.如果服务器通过XMLHTTPRequest发送HTML,文本将存储在responseText属性中. 从服务器端发送的HTML的代码在浏览器端不需要用Java ...
- [原创]编译CLANG时遇到问题的解决办法
CLANG备忘录: 1.编译时遇到 LINK1123 错误尝试使用其他版本的VS编译,可以有效解决这个问题 2.编译时遇到 Unexpectedfailure executing llvm-build ...
- oracle数据库之分组查询
本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1 多表查询2)而在 ...
- JavaScript必备:Google发布的JS代码规范(转)
[翻译]关于Google发布的JS代码规范,你需要了解什么? 翻译 | WhiteYin 译文 | https://github.com/WhiteYin/translation/issues/10 ...
- 关于VBS的一个怪现象
今天一个同学让我帮忙写一个程序,要求是: 输入一个n,返回从0到n中任意个数的组合,返回取异或结果为0的组合.来看VBS代码 n = p = "" ^n - s = s = s ) ...
- Form1调用Unit2类中函数
Form1有一个button,当Form1.Create时触发Button的OnClick事件,OnClick事件调用Unit2单元中的函数: unit Unit2; interface uses F ...