欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > JS中变量类型和计算

JS中变量类型和计算

2024/10/30 10:33:00 来源:https://blog.csdn.net/huyijian1314/article/details/140421078  浏览:    关键词:JS中变量类型和计算

变量类型

  • 值类型,值类型存储在栈(Stack)内存中

    • 栈内存是一种快速存取的内存区域,用于存储简单的数据值和局部变量。值类型的数据通常比较小,存储在栈中,能够快速地进行读取和写入操作。

      例如,定义一个基本类型变量:

      	let a = 10;let b = a;b = 20;console.log(a); // 10console.log(b); // 20
      

      值类型(基本类型):直接存储在变量中的值。这些类型包括:

      • Number
      • String
      • Boolean
      • Undefined
      • Null
      • Symbol(ES6 引入)
      • BigInt(ES2020 引入)
  • 引用类型-引用类型存储在堆(Heap)内存中
    引用类型存的是内存地址

     引用类型:存储的是对象的引用,而不是对象本身。引用类型包括:- Object- Array- Function- Date- 其他自定义对象
    

    typeof 运算符

typeof undefined; // undefined
typeof 'abc'; // String
typeof 123; // Number
typeof true; // boolean
typeof []; // object
typeof {}; // object
typeof null; // object
typeof console.log; // Function

注意,null是一个特殊的object,定义的一个空的指针(文职),但是它并没有指向任何的对象。null 特殊情况:尽管 typeof null 返回 “object”,但 null 实际上是基本类型之一,因此需要特别处理。typeof只能区分值类型(定义在栈上的数据),因此,判断引用类型需要使用其他方法。另外注意,function是一个非常非常特殊的引用类型,在js中函数的定位非常高,在使用上都有一些非常特殊的点,因此需要非常轻松的判断其类型。

判断数组:

const arr = [];
arr instanceof Array

其他,使用原型判断

Object.prototype.toString.call(arr);
// '[object Array]'

变量计算

js有强制类型转换,需要注意。

字符串拼接

如下例子:

var a = 100 +10 // 110
var b = 100 + '10' // 10010

==运算

100 = '100' //true
0 = '' // true
null == undefined // true

if语句

var a = true;
if (a) {...
}
var b = 100;
if (b) {...
}var c = '';
if (c) {...
}

逻辑运算

console.log(10 & 0); // 0
console.log('' || 'abc'); // abc
console.log(!Window.adc); // true
var a = 100
// 判断一个变量会被当成 true 还是 false
console.log(!!a); // true

从上面几个例子可以看出,我们在代码中进行逻辑判断时绝大部分情况一定要使用=== !,这里我们可以借鉴下jquery源码的类型判断。

下面这种特殊情况可以不使用===判断

var obj = {a: 'xx'
}
if (object.a == null) {...
}

这里的 *if (object.a == null)相当于 object.a === undefined || object.a === null
其他情况都适用===进行类型判断。

JS的内置函数

  • Object
  • Array
  • Number
  • Boolean
  • String
  • Date
  • Function
  • RegExp
  • Error

如何理解JSON

其实JSON和Math一样。都是JS内置的一个对象

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com