js - 02 JS的组成和变量
2019-11-04 本文已影响0人
大怪兽迪迦
JS的组成
按照相关的js语法,去操作页面中的元素,又是还要操作浏览器中的一些功能
- ECMAscript 3/5/6…… : js的语法规范(变量、数据类型、操作语句等)
- DOM(document object model):文档对象模型,提供一些js的属性和方法,用来操作页面中的DOm元素
- BOM(browser object model):浏览器对象模型,提供一些js的属性和方法,用来操作浏览器中的
JS中的变量
变量:可变的量,在编程语言中,变量其实就是一个名字,用来储存和代表不同值的东西
// ES3
var a = 12; // => 创建一个变量;
a = 13;
console.log(a) // => 输出的是a代表的值13;
// ES6
let b = 100; // => 创建一个变量;
b = 200;
console.log(b) // => 输出的是b待播啊的值是200;
const c = 100; // => 一个特殊的变量,可以理解为常量;
c = 200; // => 报错。CONST创建的变量,存储的值不能被修改;
//创建函数也可以理解为创建一个变量
function fn(){}
//创建一个类可以理解为创建一个变量
class A{}
//ES6的模块导出可以理解为创建一个变量
import XXX from './xxx.js'
//Symbol 创建唯一值
let a = 100;
let b = 100;
a == b => true
let a = symbol(100);
let b = symbol(100);
a == b => false
// 创建唯一值a 所以不可能与其他值相等
变量的作用域
一个变量的作用域是是程序源码中定义这个变量的区域
- 全局变量:拥有全局作用域,在js代码中的任何地方都是有定义的。
- 局部变量:作用域是局部性。
全局变量
- 优先性:
局部变量的优先级高于全局变量
var scope = "global" // 声明一个全局变量
function checkscope(){
var scope = "local" // 声明一个同名的局部变量
return scope // 返回局部变量的值,而不是全局变量的值
}
checkscope() // => "local"
思考:尽管在定义全局变量时不用写var,在局部定义时必须写,若不写将会发生什么
scope = "global"; // 声明一个全局变量,不用var
function checkscope2(){
scope = "local"; // 修改了全局变量
myscope = "local"; // 声明一个新的全局变量
return [scope, myscope] // 返回两个值
}
console.log(checkscope2()) // => return["local", "local"]: 产生了副作用
console.log(scope) // => global
console.log(myscope) // => 报错