day05 - javascript函数(下)/事件/对象

1.作用域:

概念:变量或者函数可以起到作用的范围区域。

函数外边的变量叫做全局变量,可以在函数外面和函数里面使用。
var num = 1;
function test(){    
	num++;    
	console.log(num);
}
test(); // 2
console.log(num); // 2
函数内部的变量叫做局部变量,只能在函数内部使用。
function test(){    
	var num1 = 10;    
	num1++;    
	console.log(num1);
}
test(); // 11
console.log(num1); // 报错,num1未定义
有一种情况比较特殊,函数内部声名的变量也是全局变量。
function test(){    
	num1 = 10;    
	num1++;    
	console.log(num1);
}
test(); // 11
console.log(num1); // 11    

1.访问规则(输出、拿变量运算)
当前作用域 →上级作用域(父作用域)→全局作用域
如果直到全局作用域都没有找到变量的定义,则报错
2.赋值规则
当前作用域 →上级作用域(父作用域)→全局作用域
如果有一个值,但是没有定义;而且直到全局作用域都没有找到变量的定义,则把值定义为全局变量
总结:

  1. 函数外边使用的变量是全局变量,要在全局内找,可以是函数外部声名的变量也可以是函数内部的隐式声名的变量。
  2. 函数内部使用的变量是局部变量,先从局部找,如果局部没有,再从全局中找。

2.递归函数:

概念:递归函数就是在函数中调用自己。

// 求10的阶和,即:10+9+8+...+1
function facSum(num){    
	if(num == 1){        
		return 1;    
	}    
	return num + facSum(num-1);
}
var res = facSum(10);
console.log(res); // 55

3.事件:

概念:
事件就是用户在网页上的动作,例如:鼠标点击、鼠标移动、键盘按下… 事件三要素 : 事件源 + 事件名称 + 事件处理函数
事件源 : 谁触发这个事件 (按钮 btn)
事件名称 : 触发了什么事件 (点击click事件)
事件处理函数 : 事件触发后要执行的代码

注意:事件处理程序(函数)并不是立马执行,而是当事件触发的时候在会执行(浏览器会自动调用)

事件类型:

1.鼠标事件

事件备注
click单击
dblclick双击
contextmenu右击
mouseover移入(有冒泡)
mouseout移出(有冒泡)
mouseenter移入(没有冒泡)
mouseleave移出(没有冒泡)
mousedown按下
mouseup弹起
mousemove鼠标移动
mousewheel滑轮

2.键盘事件

事件备注
keypress敲击键盘
keydown键盘按下
keyup键盘抬起
键盘事件可以区分按下的是哪个键,每个键都有按键码
window.onkeydown = function(e){    
	var keyNum = e.keyCode //e.keyCode获取键盘码    
	if(keyNum == "13"){        
		alert("回车键");    
	}else if(keyNum == "8"){        
		alert("BackSpace键");    
	}
}
e.keyCode有兼容问题:IE中使用e.which

兼容写法:
var keycode = e.keyCode || e.which

3.表单事件

事件备注
focus获取焦点
blur失去焦点
change内容改变
submit提交事件

4.window事件

事件备注
load页面中所有内容(html结构、图片资源、样式文件、js文件)都加载完成,再执行这个事件的函数
resize浏览器窗口大小发生改变的时候触发的事件
scroll浏览器的滚动条发生滚动的时候触发的事件(必须有滚动条才行)
unload浏览器关闭时触发的事件

4.对象:

1.概念:
将一系列的数据存入一个变量中,这个变量就是对象。

2.对象的创建:

1//直接创建 - 创建了一个空对象
    var obj = {};
(2//通过new来创建
    var obj = new Object();
  • 这是以json对象的形式创建的对象。
  • 对象中多个数据是以键值对的形式出现。
  • 键和值之间用冒号,键值对之间使用逗号。
  • 对象的键都是字符串,但是可以不加引号;如果不加引号,键里面就不能包含连字符(-);如果键里面有连字符,那就必须加引号。
  • 对象的值可以是符合js数据类型的任意类型。
  • 对象中的键值对是无序的。
//eg:
var obj = {
    属性1:1,
    属性2:2
}

属性名的定义方式和变量名的定义方式一样。值可以是任意类型

3.对象的访问:

1)对象.属性名 (对象.)2)对象["键"]   //中括号中必须加引号
注意:对象中的键如果有连字符,那就不能使用 对象.键 这种方式来访问,必须使用 对象["键"]

4.对象的遍历:

for(var 变量 in 对象){
    变量  - 指的是对象中的每一个键
}

5.对象的方法:

//对象中的值为函数的话,这个键叫做对象的方法
var obj2 = {
    name:'王五',
    study:function(){
        console.log("在学习");
    }
}
console.log(obj2);
//方法的访问和属性是一样的:
obj2.study(); // 因为函数执行需要调用,所以需要加小括号

6.对象的操作:

增    对象.=//如果对象中没有这个属性,给它赋值就是增加delete 对象.键        
改                    //如果对象中有这个属性,给它赋值就是修改
查    对象.键   对象[]

5.构造函数:

var num = 90;
var num1 = new Number(90);
console.log(typeof num); // number
console.log(typeof num1); // object
//用new创建出来的数据都可以有属性和方法, 因为用new创建出来的变量都是对象。
//我们把能用new创建对象的这种函数,叫做构造函数。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是根据您的要求编写的 Google Earth Engine 代码: ```javascript // 选择研究区,以山西省为研究区 var region = ee.FeatureCollection("users/your_username/your_feature_collection") .filter(ee.Filter.eq('province', '山西省')); // 定义起始时间和终止时间 var startDate = ee.Date('2000-01-01'); var endDate = ee.Date('2020-12-31'); // 加载NDVI影像 var ndviCollection = ee.ImageCollection('MODIS/006/MOD13Q1') .select('NDVI') .filterBounds(region) .filterDate(startDate, endDate); // 加载降水影像 var precipitationCollection = ee.ImageCollection('NASA/GPM_L3/IMERG_V06') .select('precipitationCal') .filterBounds(region) .filterDate(startDate, endDate); // 加载气温影像 var temperatureCollection = ee.ImageCollection('MODIS/006/MYD11A2') .select('LST_Day_1km') .filterBounds(region) .filterDate(startDate, endDate); // 加载夜间灯光数据影像 var nightLights = ee.ImageCollection("NOAA/DMSP-OLS/NIGHTTIME_LIGHTS") .select("avg_vis") .filterBounds(region) .filterDate(startDate, endDate); // pearsonsCorrelation计算相关性系数 var correlation = ndviCollection .addBands(precipitationCollection) .addBands(temperatureCollection) .addBands(nightLights) .reduce(ee.Reducer.pearsonsCorrelation()) .clip(region); // 在这里,对堆栈进行采样 var sample = correlation.sample({ region: region, scale: 1000, numPixels: 1000 }); // 正确调用reducer var stats = sample.reduceColumns({ selectors: ['NDVI', 'precipitationCal'], reducer: ee.Reducer.mean() }); // 然后选择两个属性以查看相关性 var ndviMean = stats.get('mean_NDVI'); var precipitationMean = stats.get('mean_precipitationCal'); print('Mean NDVI:', ndviMean); print('Mean Precipitation:', precipitationMean); // 导出函数 Export.table.toDrive({ collection: sample, description: 'correlation_sample', fileFormat: 'CSV' }); ``` 请确保将代码中的`your_username`替换为您的用户名,并根据您的需求进行其他适当的更改。此代码将加载山西省内的NDVI、降水、气温和夜间灯光数据影像,并计算它们之间的相关性系数。然后,对相关性结果进行采样,并计算NDVI和降水的平均值。最后,将采样结果导出为CSV文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值