博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS自学笔记03
阅读量:5899 次
发布时间:2019-06-19

本文共 2265 字,大约阅读时间需要 7 分钟。

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
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();//输出undefinedconsole.log(num);//访问不到,报错预解析中,变量的提升,只会在当前的作用域中提升,提升到当前作用域的最上面。函数中的变量只会提升到函数的作用域中的最前面,不会出去预解析会分段。不同对script标签中的重名函数预解析不会发生冲突
var a=25;function abc(){
alert(a);var a=10;}abc();//undefinedconsole.log(a);// 25console.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;}

转载于:https://www.cnblogs.com/Tanqurey/p/10485298.html

你可能感兴趣的文章
SQL Server-表表达式基础回顾(二十四)
查看>>
DAO层,Service层,Controller层,View层
查看>>
Developing a Service Provider using Java API(Service Provider Interface)(转)
查看>>
LINQ高级编程 笔记
查看>>
Android 应用开发推荐书单
查看>>
自定义有监听器的ScrollView
查看>>
BAE Flask UEditor 使用七牛云
查看>>
关联的特殊应用
查看>>
Bootstrap系列 -- 15. 下拉选择框select
查看>>
【转载】无限级分类的简单实例
查看>>
基础总结篇之一:Activity生命周期
查看>>
关于WinPE安装操作系统
查看>>
Windows 10 IoT Serials 2 - Windows 10 IoT RTM 升级教程
查看>>
使用iftop网络流量监控
查看>>
LeetCode Median of Two Sorted Arrays
查看>>
(算法)两个人是否为队友
查看>>
oschina程序开发
查看>>
mysql创建每月执行一次的event
查看>>
直接刷脸?一元就能搞定会议签到!
查看>>
kafka集群部署
查看>>