JavaScript的基础知识——变量、数据类型

JavaScript的基础知识——变量、数据类型

JavaScript是什么?

JavaScript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言。通俗一点:JS是前端代码中最重要的部分(行为层),常用来操作HTML页面响应用户的操作验证传输数据等。

声明变量

使用let或者var声明变量,变量可以用来存储各类数据以便后续使用。

变量命名规则

严格区分大小写;

只能包含 字母 数字 _ $,不能以数字开头;

不能使用 关键词/保留词;

除非需要,否则不要覆盖已有的API;

见名知意。

var和let的区别:

**var:**页面加载时,两个过程:1、先定义阶段

会找到当前作用域中的var定义的变量(只定义变量,不会提前赋值)

2、执行阶段

从头开始,往下执行代码

1)在if、for、while···内不看成一个作用域,在这些内定义变量等于全局变量,只在function()函数里面看成是一个作用域。

console.log(a);  //undefined

if(false){
var a = 10;
}

console.log(a);  //undefined
a:是全局变量

2)定义相同变量时,后者会把前者覆盖。

**let:**1)不仅仅把函数当成作用域,在if、for、···内也看成一个作用域,定义的变量不是全局变量

2)没有定义的变量不能提前使用

console.log(a);

let a = 10;

3)同一个作用域不可以let同一个变量

let a = 1;

let a = 2;

数据类型

数据类型分为:

基础数据类型:number、string、boolean、undefined、null

复杂数据类型:引用数据类型

基础数据类型

number 数字类型

数字类型包括整数,小数(浮点数)

特殊:NAN属于数字类型

let a = 10;

let b = 1.1;
string 字符串类型

字符串类型是以单引号、双引号、模板字符串括号起来的。

括号里面可以是中文、英文、数字、符号,但是定义字符串类型的单引号、双引号、模板字符串不能嵌套使用,如果一定要加,需要用转义符号。

let a = "中文";

let b = 'english';

let c = `111`;

let d = "中"国"";  //这种写法错误
let f = "中\"国\"";  //正确写法
boolean 布尔类型

布尔类型只有真和假:true和false;

let a = false;

let b = true;
undefined 未定义类型

未定义类型就是只声明未赋值。不指向任何东西

let a ;

let b = undefined;
null 空指针

不知道开始变量是什么样的值,但是确定的是变量被存储的是一个对象类型

let a = null;

引用数据类型

对象类型
Array 数组

数组就是一个数据,里面用来存储一组数据

let a = [];//定义
let b = [100,"数组",1,true];
//取数据,数组里面的数都有一个下标,利用下标取数据,从0开始
console.log( b[2] );   //结果是1
console.log( b.length );  //取长度,为4
//给某一项重新赋值
a[0] = 20;  
Object 对象数据

对象:就是对一个事物的描述

两个属性名不能相同,相同会被覆盖;

对象里面的数据没有顺序之分。

let a = {
//(属性)键  : 值
		name  :  "姓名",
		age :  20,
		height  :  "175cm",
 };
 //取值
 console.log(a.name);  //方法一
 console.log(a["name"]);   //方法二,[]里面表示一个数据,没有加“”号表示是一个变量
 //修改某个属性
a.age = 22;
//删除某个属性
delete a.age;
//添加新属性
a.tel = "12345678901";

与数组的相同与不同:

同:都可以存放不同的数据;可以存放多个数据

不同:对于每个数据都有一个描述,称之为属性

嵌套取值
let a = {
//(属性)键  : 值
		name  :  "姓名",
		age :  20,
		height  :  "175cm"
		friend:{
			name : "名字",
			hobby : ["唱歌","画画","弹琴"]
		}
 };
 //取数据
 console.log( a.friend.hobby[2]);  //弹琴
function函数

把一堆代码封装起来,使浏览一运行不会立即调用,除非调用函数才会执行

function a (){
    //定义一个函数,a为函数名
 } 
 //函数调用
 a();
内置对象 节点对象

在JavaScript里已经被提前定义好的,不需要定义就可以获取的。

比如:window 、document

typeof运算符

用于检测基本数据的类型,返回的是一个字符串

console.log( typeof 10 );     //number
console.log( typeof "10" );   //string
console.log( typeof true );    //boolean
console.log( typeof undefined );  //undefined
console.log( typeof null );  //特殊:返回的是object
console.log( typeof [] );    // object
console.log( typeof {} );    //object
console.log( typeof function a(){} );   //返回function,但这个是函数,属于的是object类型
值类型和引用数据类型的区别

值类型

值类型是指原始类型的值,也叫基本类型。

数据类型:number、string、boolean、null、undefined

存储在栈中,占内存空间固定、使用后被销毁

赋值方式:1)值的拷贝,创建一个新对象

​ 2)保存和复制是值本身

​ 3)两份数据在内存是完全独立的

值不可变

作用域在函数作用域,在函数内部修改时生效,函数销毁时失效。

对象和对象的比较是:值的比较

类型的检测:typeof运算符

引用类型

引用值是指引用类型的值。

数据类型:object、function、array、data、regexp

存储在堆,占内存空间不稳定,使用后不一定被销毁,只有一个对象没有任何引用时,系统的垃圾回收机制才会回收销毁

赋值方式:1)引用的拷贝,创建一个新引用

​ 2)保存与复制的是指向对象的一个指针

​ 3)使用new()方法构造出的对象是引用类型

值可变

作用域是在函数中被修改时修改的是运行时数据区中的值,即使函数被销毁,变量的值依旧被改变。

对象和对象的比较是:地址的比较

类型的检测:instanceof运算符

猜你喜欢

转载自blog.csdn.net/leilei__66/article/details/106963986