类别:js / 日期:2022-11-17 / 浏览:248 / 评论:0

JS 的基本数据类型有字符串,数字,布尔,数组,对象,Null,Undefined,基本数据类型是按值访问的,也就是说我们可以操作保存在变量中的实际的值,
基本数据类型和引用数据类型的区别如下:
基本数据类型的值是不可变的,任何方法都无法改变一个基本类型的值,当这个变量重新赋值后看起来变量的值是改变了,但是这里变量名只是指向变量的一个指针,所以改变的是指针的指向改变,该变量是不变的,但是引用类型可以改变基本数据类型不可以添加属性和方法,但是引用类型可以基本数据类型的赋值是简单赋值,如果从一个变量向另一个变量赋值基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上,引用数据类型的赋值是对象引用,
基本数据类型的比较是值的比较,引用类型的比较是引用的比较,比较对象的内存地址是否相同
基本数据类型是存放在栈区的,引用数据类型同事保存在栈区和堆区
NaN 是 JS 中的特殊值,表示非数字,NaN 不是数字,但是他的数据类型是数字,它不等于任何值,包括自身,在布尔运算时被当做 false,NaN 与任何数运算得到的结果都是NaN,党员算失败或者运算无法返回正确的数值的就会返回 NaN,一些数学函数的运算结果也会出现 NaN ,
JS 的作用域类型:

一般认为的作用域是词法作用域,此外 JS 还提供了一些动态改变作用域的方法,

常见的作用域类型有:

函数作用域,如果在函数内部我们给未定义的一个变量赋值,这个变量会转变成为一个全局变量,

块作用域:块作用域吧标识符限制在{}中,
改变函数作用域的方法:
eval(),这个方法接受一个字符串作为参数,并将其中的内容视为好像在书写时就存在于程序中这个位置的代码,
with 关键字:通常被当做重复引用同一个对象的多个属性的快捷方式
undefined 与 null:目前 null 和 undefined 基本是同义的,只有一些细微的差别,null 表示没有对象,undefined 表示缺少值,就是此处应该有一个值但是还没有定义,因此undefined==null 返回 false
此外了解== 和===的区别:
在做==比较时。不同类型的数据会先转换成一致后在做比较,===中如果类型不一致就直接返回 false,一致的才会比较
类型判断函数,使用 typeof 即可,首先判断是否为 null,之后用 typeof 哦按段,如果是object 的话,再用 array.isarray 判断是否为数组,如果是数字的话用 isNaN 判断是否是NaN 即可
扩展学习:
JS 采用的是词法作用域,也就是静态作用域,所以函数的作用域在函数定义的时候就决定了,

看如下例子:

var value = 1;
function foo() {
    console.log(value);
}
function bar() {
    var value = 2;
    foo();
}
bar();
假设 JavaScript 采用静态作用域,让我们分析下执行过程:
执行 foo 函数,先从 foo 函数内部查找是否有局部变量 value,如果没有,就根据书写的位置,查找上面一层的代码,也就是 value 等于 1,所以结果会打印 1。
假设 JavaScript 采用动态作用域,让我们分析下执行过程:执行 foo 函数,依然是从 foo 函数内部查找是否有局部变量 value。如果没有,就从调用函数的作用域,也就是 bar 函数内部查找 value 变量,所以结果会打印 2。
前面我们已经说了,JavaScript 采用的是静态作用域,所以这个例子的结果是 1。

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。

«    2023年11月    »
12345
6789101112
13141516171819
20212223242526
27282930

最新留言