JS自学笔记03
JS自学笔记03
1、函数练习:
如果函数所需参数为数组,在声明和定义时按照普通变量名书写参数列表,在编写函数体内容时体现其为一个数组即可,再传参时可以直接将具体的数组传进去
即
var max=getArratMax([1,4,2,6,8,2,5]);
关于说明:
/**
*函数的说明
*@param array参数为一数组//解释说明参数列表
*returns //解释说明返回值
*
*
/
当有人需要查看该函数的说明时,使用ctrl+左键点击函数名即可访问以上注释
//输入年月日,获取这个日期是这一年的多少天
function getDates(years,month,day){
var days=day;
if(month==1){
return days;
}
var months=[31,28,31,30,31,30,31,31,30,31,30,31];
}
for(var i=0;i<month-1;i++){
days+=months[i];
}
//判断是否为闰年
if(year%4==0&&year%100==0&&year%400==0&&month>2)
{
days++;
}
return days;
2、arguments对象
定义一个函数,若不确定用户是否传入了多少参数,此时若知道了参数的个数,就可继续进行运算
arguments.length可获取当前参数列表的参数个数
只使用arguments对象可以查看当前所传参数
3、函数的其他定义方式
1)命名函数:函数具有函数名,函数名存储的是函数代码
匿名函数:函数不具有函数名,不能直接调用
2)函数表达式的定义方式:
var 变量名=function(...){...};
f(...);//调用函数
function f(){
console.log("你好");
}
console.log(f);//将输出f函数的代码
var f1=function(){
console.log("你好");
}
f1();//你好
f1=function(){
console.log("您好");
};
f1();//您好
//根据函数名存储的是函数代码的原理
(function(){console.log("你好")})();
函数的自调用,没有名字,声明的同时直接调用
一次性的
函数同时也是一数据类型,function型,可作为参数使用
注意,作参数时不需要带括号,被称为回调函数
function f1(fn){
fn();
}
function f2(){
console.log(你好);
}
f1(f2);
函数也可作为返回值被使用
function f(){
console.log("你好");
return function(){console.log("输出")}
}
var ff=f();//调用
ff();
4、作用域
1)全局变量:
该变量是由var声明的,为全局变量,可以在页面的任何位置使用。如果页面不关闭,该变量将一直占有内存空间不被释放
局部变量:在函数内部的变量是局部变量,外边不可使用。除了函数以外,其他的任何位置定义的变量都是全局变量
块级作用域:{}一对大括号可视为一块,在这对括号内定义的变量只能在该块内使用。js中不存在块级作用域,在块内声明的变量也可以在块外使用,函数除外。
全局作用域:全局变量的使用范围
局部作用域:局部变量的使用范围
隐式全局变量:不使用var声明变量,被称为隐式全局变量,可以被delete关键字删除并释放,全局变量则不能;并且隐式全局变量使用在函数内,外界仍可直接访问该变量。
2)作用域链
5、预解析
1)提前解析代码
把变量及函数的声明提前。把变量声明提前到当前所在作用域最上面。把函数声明提前到当前所在作用域最上面。先提升var,再提升function
console.log(num);
var num=10;//系统预解析该条指令中的声明部分,上述输出语句将输出undefined
f();//输出undefined,就算没有下面10的赋值语句也是undefined,因为都只会把声明提前,然后执行函数
var num=20;
function f(){
console.log(num);
var num=10;
}
案例:
function f1(){
console.log(num);
var num=10;
}
f1();//输出undefined
console.log(num);//访问不到,报错
预解析中,变量的提升,只会在当前的作用域中提升,提升到当前作用域的最上面。函数中的变量只会提升到函数的作用域中的最前面,不会出去
预解析会分段。不同对script标签中的重名函数预解析不会发生冲突
var a=25;
function abc(){
alert(a);
var a=10;
}
abc();//undefined
console.log(a);// 25
console.log(a);//输出函数体内容
function a(){
console.log('aaaa');
}
var a=1;
console.log(a);//1
var a=b=c=9;
//其中a为全局变量,在函数体内定义时只在体内有效。b,c是隐式全局变量,全场有效
f1();//报错
var f1=function(){
console.log(a);
var a=10;
}
JS自学笔记03的更多相关文章
- JS自学笔记05
JS自学笔记05 1.例题 产生随机的16进制颜色 function getColor(){ var str="#"; var arr=["0","1 ...
- JS自学笔记04
JS自学笔记04 arguments[索引] 实参的值 1.对象 1)创建对象 ①调用系统的构造函数创建对象 var obj=new Object(); //添加属性.对象.名字=值; obj.nam ...
- JS自学笔记02
JS自学笔记02 1.复习 js是一门解释性语言,遇到一行代码就执行一行代码 2.查阅mdn web文档 3.提示用户输入并接收,相比之下,alert只有提示的作用: prompt(字符串) 接收: ...
- JS自学笔记01
JS自学笔记01 1.开发工具 webstorm 2.js(javascript) 是一门脚本.解释性.动态类型.基于对象的语言 含三个部分: ECMAScript标准–java基本语法 DOM(Do ...
- Node.js自学笔记之回调函数
写在前面:如果你是一个前端程序员,你不懂得像PHP.Python或Ruby等动态编程语言,然后你想创建自己的服务,那么Node.js是一个非常好的选择.这段时间对node.js进行了简单的学习,在这里 ...
- 老男孩Python全栈开发(92天全)视频教程 自学笔记03
day3课程目录: pyhton的历史 32bit和64bit系统的区别 Python版本的选择 第一个pyhton程序 文件后缀名及系统环境变量的介绍 pyhton程序的执行和其他编程语言的简单对比 ...
- JAVA自学笔记03
1.三目运算符 1)格式:(关系表达式)?表达式1:表达式2 true则执行表达式1,false则执行表达式2 @ 例题1 :求两数中的较大值 System.out.println(x>y?x: ...
- JavaScript自学笔记(1)---表单验证,let和const,JSON文件
今天开个JS自学笔记,本身JS的语法很简单,如果学过Java或者C系的都很容易,就不讨论了.主要是讨论实际应用的问题. 1.表单验证: a.html自动验证: HTML 表单验证可以通过浏览器来自动完 ...
- 一点感悟:《Node.js学习笔记》star数突破1000+
写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...
随机推荐
- document.createDocumentFragment()运行效率
createDocumentFragment作用是什么? 快速响应,提高效率,提升用户体验. 调用document.body.append(),每调用一次都要刷新页面 一次.效率就低了. 用docum ...
- Oier们的镜子(mirror)
题解: 这题真是把我坑的很惨.. 题目看了很久才看懂.. 然后刚开始又没看见每个只能匹配一个这种条件 #include <bits/stdc++.h> using namespace st ...
- 【CF809D】Hitchhiking in the Baltic States
题意: 给你n个区间[li,ri],让你选出从中一个子序列,然后在子序列的每个区间里都选择一个tj,满足t1<t2<...<tlent1<t2<...<tlen.最 ...
- Samba文件共享系统
前言:今天我们来聊一聊samba这个共享的服务,在企业中的应用还是挺多的,它的出现可以很好的解决不同系统之间的文件传输共享问题: [Samba服务程序组件] Samba服务提供了smbd和nmbd两个 ...
- Codeforces 653F Paper task SA
Paper task 如果不要求本质不同直接st表二分找出最右端, 然后计数就好了. 要求本质不同, 先求个sa, 然后用lcp求本质不同就好啦. #include<bits/stdc++.h& ...
- 浏览器iscroll
::-webkit-scrollbar{width:4px;height:4px;background:transparent}::-webkit-scrollbar-track{background ...
- 2018牛客网暑假ACM多校训练赛(第五场)F take 树状数组,期望
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round5-F.html 题目传送门 - https://www.no ...
- 给定数组长度2n,分成n对,求n对最小元素之和最大
给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大. 示例 ...
- 20165235 2018-3 《Java程序设计》第5周学习总结
20165235 2018-3 <Java程序设计>第5周学习总结 教材学习内容总结 第六章 内部类与异常类 (一)内部类:1.java支持在一个类中定义另一个类,这个类叫内部类.2.内部 ...
- TF之BN:BN算法对多层中的每层神经网络加快学习QuadraticFunction_InputData+Histogram+BN的Error_curve
# 23 Batch Normalization import numpy as np import tensorflow as tf import matplotlib.pyplot as plt ...