JS学习笔记(一)

JS——数据类型

       js有六种数据类型,分别是五种基本数据类型(number、boolen、string、undefined、null)和一种复杂类型(object);

        类型查看方式:typeof 操作符  typeof(xx);

        注:对null类型数据进行typeof后,返回的是object类型,因为null被当做了一个空对象引用;

1、Number类型

    number类型包含整数和浮点数两种值(浮点数需以x.x形式展现)、极大或极小的数字可以用科学(指数)计数法来写(例: var a = 123e5;)。

    NaN:非数字类型。特点:①涉及到的任何关于NaN的操作都会返回NaN;②NaN不等于自身。

    NaN:即非数值(Not a Number)是一个特殊的值,这个数值表示本来要返回数值的操作未返回数值的情况(这样就不会抛出错误了);

    isNaN()函数用于检查其参数是否是非数字值,在收到一个值时,它会首先尝试将这个值转换成数值。

isNaN(123); //false
isNaN("hello") //true
isNaN("123")  //false "123"是一个字符串,但可以转换成数值

2、Boolen类型

    该类型只有true和false两个值。

3、string类型

    字符串有length属性。

    字符串转换:转型函数String(),适用于任何数据类型(null,undefined转换后为null和undefined);

                        toString()方法(注:null和undefined没有toString()方法)。

4、Undefined类型

    只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量值就是undefined。

5、Null类型

    null类型被看做空对象指针,前文说道null类型也是空的对象引用。

6、Object类型

    js中对象是一组属性与方法的集合。这里就要说道引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为他们描述的是一类对象所具有的属性和方法

三大引用类型

1、Object类型

    我们所看到的大多数类型值都是Object类型的实例。创建Object实例的方式有两种。

    第一种:使用new操作符跟Object构造函数,如下:

var person = new Object();
person.name = "Elaine";
person.age = 20;

    第二种:使用对象字面量表示法(json),如下:

var person = {
    name:"Elaine";
    age:24;
};

2、Array类型

    数组的每一项可以用来保存任何类型的数据,也就是说,可以用数组的第一个位置来保存字符串,第二个位置保存数值,第三个位置保存对象...另外,数组的大小是可以动态调整的。

    创建数组的基本方式:

    第一组:使用Array构造函数,例如 :

var colors = new Array("red","blue","yellow");

    第二组:使用数组字面量表示法,例如:

var colors = ["red","blue","yellow"];

3、Function类型

每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。函数通常是使用函数声明语法定义的,例如:

function sum(a,b){
      return a+b;
};

这和使用函数表达式定义函数的方式相差无几:

var sum = function(){
      return a+b;
};

js按照存储方式分为值类型和引用类型,它们在计算上有何区别?

举例说明:

题目1: var a = 100;
    var b = a;
      a = 200;

    console.log (b);


题目2: var a = {age : 20};
    var b = a;
    b.age = 21;
    console.log (a.age);

    题目1的答案是 100,题目2的答案是21;

        题目1是简单的值类型,在从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,然后再把该值复制到为新变量分配的位置上。此时,a中保存的值为 100 ,当使用 a 来初始化 b 时,b 中保存的值也为100,但b中的100与a中的是完全独立的,该值只是a中的值的一个副本,此后,这两个变量可以参加任何操作而相互不受影响。也就是说基本类型在赋值操作后,两个变量是相互不受影响的即操作对象是值。


       题目2是引用类型,当从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到为新变量分配的空间中。这时保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象。那么赋值操作后,两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响。因此,引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响。即操作对象是指向值的指针


说明:此文章仅是自己学习js的笔记,仅用作学习用途,如有错误,欢迎指正。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值