变量的类型和计算相关知识部分整理

本文深入探讨了JavaScript中变量的值类型与引用类型的区别,包括它们的赋值行为、类型检测方法及在计算中的特性。同时,文章还介绍了如何在不同场景下选择使用==或===,并提供了if条件、布尔操作符的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量的类型和计算

这篇文章是在学习JS变量时的一些知识点整理,只是并不全面。

类型部分

变量可以分成两个类型:值类型和引用类型

值类型:number string boolean undefined.

  • 变量值类型的特点:不会因为赋值而相对干预。
var a = 100;
var b = a;
a = 200;
console.log(b);//100

var c = b;
console.log(c);//100
b = 300;
console.log(c);//100

引用类型:Function Object Array

  • 变量引用类型的特点:引用类型的赋值,并不是对象的传递,而是是对指针的复制,所有的变量都指向同一个对象。

表现在储存上就是,只储存有一个对象,所有的变量都是按指针指向的对象对对象进行调用。因为对象可以有无限多个属性,过多属性会占用大量内存,这种用指针调用方式避免了对象传递占用过多内存的问题。

在对象中
var a = {age:20};
var b = a;
console.log(b); //Object{age:20}
console.log(a); //Object{age:20}
b.age = 21;
console.log(b); //Object{age:21}
console.log(a); //Object{age:21}

数组中的对象也有同样的表现
var arr = [1,2,3];
arr.age = 21;
console.log(arr); //[1,2,3,age:21]
var arr2 = arr;
console.log(arr2); //[1,2,3,age:21]
arr2.age = 22;
console.log(arr); //[1,2,3,age:22]

函数也有同样的特性
function fn() {};
fn.age = 21;
var fn1 = fn;
console.log(fn1.age); //21
fn1.age = 22;
console.log(fn.age); //22
  • 类型检测:typeof
    typeof检测返回的数据类型有六种:undefined string boolean number object function
    不过typeof只可以区分出值类型,对于引用类型就无能为力了,检测objectarray以及null时都会返回"object"。另外,引用类型中function可以区分出来, 因为function相对于其他引用类型(如对象、数组)来说,具有非常特殊的意义,在JS 中函数非常重要。
    如果想要准确判断引用类型的话,可以使用instanceof操作符
var age
console.log(typeof age); //"undefined" 对未初始化和未声明的变量执行typeof操作符都会返回"undefined"值
console.log(typeof "字符串"); //"string"
console.log(typeof true); //"boolean"
console.log(typeof 10); //"number"
console.log(typeof fn); //"function"

console.log(typeof null); //"object"
console.log(typeof [1,2]); //"object"
console.log(typeof {a:1,b:2}); //"object"

var a = [1, 2]
console.log(a instanceof Array); //true
计算部分
  • 强制类型转换 在值类型的运算中,需要特别注意和利用强制类型转换这一特性。
  1. 加号"+"操作符 number和string相加时,会把number转换成string然后再连接起来
console.log(100 + 10); //110
console.log(100 + '10'); //"10010"
  1. 相等"=="操作符 先转换操作数(通常称为“强制转型”),再比较相等性
console.log(100 == '100'); //true
console.log('' == 0); //true
console.log(null == undefined); //true
  1. 全等"==="操作符 除了比较之前不转换操作数之外,和相等操作符之间没有任何区别
console.log(100 === '100'); //false
console.log('' === 0); //false
console.log(null === undefined); //false
怎么判断什么时候用"==",什么时候用"==="? 当判断一个对象的属性是否存在和在函数中判断其参数是否存在时,用"==",其余情况下用"==="
var obj = {};
if(obj.a == null) {}; //这里"obj.a == null"相当于"obj.a === null || obj.a ===undefined"的简写形式
function(a,b){if(a == null){...}};  这里使用的前提是,判断的对象obj.a和a都是进行过定义的,没定义判断会报错
  1. if条件操作符
if(100) {console.log(110)}; //输出:110 这里的100返回的是true
if('') {console.log((110))}; //没有任何输出,这里‘’返回的是false

在if条件操作符中,会返回false的几种特殊情况

if(0){};
if(NaN){};
if(''){};
if(null){};
if(undefined){};
if(false){};
  1. “&&” “||” "!"布尔操作符
console.log(10 && 0); //0
console.log('' || 'abc'); //"abc"

可以通过"!!"来快速判断一个变量将会被if转换成什么

var a = 100;
console.log(!!a); //true
var b = '';
console.log(!!b); //false
其他部分
  • JS中的内置函数
Object();
Array();
Function();
String();
Number();
Boolean();
Data();
RegExp();
Error();
  • JS中的内置对象
Math;
JSON;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值