js学习笔记(三)
JavaScript
本系列笔记为JavaScript的学习笔记
JavaScript 作用域和数组
作用域
全局变量定义在所有的block外部,并且能在函数的任意地方access。
const satellite='The Moon',galaxy='The Milky Way'
let stars = 'North Star' //全局变量
const myNightSky = () =>{
stars = 'Sirius' //全局变量值会在函数中被改变
return 'Night Sky: '+satellite+','+stars+','+galaxy;
};
console.log(myNightSky())
console.log(stars)
局部变量作用域只在block内,可以保证在外部不被访问和改变。
const visibleLightWaves=()=>{
let lightWaves = 'Moonlight' //内部局部变量
console.log(lightWaves)
};
visibleLightWaves()
console.log(lightWaves) //wrong ReferenceError,can't get local var 外部不能调用内部局部变量
//由于局部变量可以做隔离,所以block可以有效的定义并使用变量,同时防止交叉污染
const visibleLightWaves=()=>{
let lightWaves = 'Moonlight'
let region = 'The Arctic'
if (region === 'The Arctic'){
let lightWaves = 'Northern Lights'
console.log(lightWaves) //最内部if{}作用域的变量
}
console.log(lightWaves) //函数作用域中的变量
};
visibleLightWaves() //调用函数
//局部循环的变量之间互不干扰,但一定要按照scope各自准确声明
const starCount = ()=>{
var i = 5 //外部的i
console.log('outside i is ',i)
for (let i=0;i<12;i++){
console.log('in side i is: ',i) //循环内部的i 与外部的i互补干涉
}
console.log('after,outerside i is:',i) //不因局部变量改变
};
starCount() //调用函数
数组
用于组织和存储数据,看可以存储字符串、数字和布尔值等,并且是一种有序的结构。(类似于python中列表List)
- 元素间用逗号分隔;
- 可用array[i]
索引,从0开始。
- 字符串也可以按照数组读取每一个字符
my_array = ['aaa','bbb'.'ccc']
console.log(my_array[1]) //bbb 输出
my_array[2] = 'cac' //改变数组内容
console.log(my_array.length) //数组大小
my_array.push('back') //后面压入
my_array.pop() //弹出最后一个
/*数组包含一系列方法,join()将元素放入一个字符串内;slice(start,end)选取数组中元素;splice(index,n,items)删除指定位置并添加元素;shift()移除首元素并返回,unshift('items')头部添加n元素并返回后长度;**strong text**concat()连接两个数组 */
//ref:http://www.w3school.com.cn/jsref/jsref_obj_array.asp
//https://msdn.microsoft.com/zh-cn/library/htbw4ywd(v=vs.94).aspx
let condiments = ['Ketchup', 'Mustard', 'Soy Sauce', 'Sriracha'];
condiments.push('add') //let 是块级变量,区别于var大范围变量
condiments = ['aaa']
//常量数组不可重现赋值
const utensils = ['Fork', 'Knife', 'Chopsticks', 'Spork'];
utensils.pop()
console.log(utensils) //常量 可以更改其中的元素
utensils = ['aa'] //但是不能重新赋值 TypeError
----------
tips
1.同一类型变量可以在一行内统一声明,用逗号分隔
2.常量const
类型数组不可重新赋值reassigned,但可更改内部元素