JavaScript基础之三(数据类型)

1.javascript里面的值类型

  number,string,boolean,null,undefined,除此之外的全部属于引用类型(Object),Object是一个集合(键值对,键值对可以是值类型)有一个地方跟C#不一样,string在C#里面是引用类型,而且是不可变的。string在javascript里面是值类型,也是不可变的。

2.javascript里面的计算都是近似计算,所以需要注意0.2-0.1==0.3-0.2(这个是不等的,false),也许以后会直接支持

3.javascript是UTF-16编码,有可能出现一个字符构成的字符串,length为2.

4.字符串换行可以使用\,这个在编码是遇到需要拼接很多字符串时非常有用。如果使用字符串用的是单引号,需要额外注意,英文里面的简写(例如can’t等),当然中文里面很少这种情况。

5.可以转化为false的几个值:undefined,null,0,-0,NaN,””(空字符串)

6.undefined和null

①这两个对象都是表示没有值,null的类型为Object,是一个引用类型;undefined的类型是undefined,是值类型。

②undefined==null—true

③当一个变量没有初始化时,值为undefined;当对象和数组的某个属性和元素不存在,值为undefined;当函数没有return时,函数的返回值为undefined;函数的参数,调用时没有传递该参数,则该参数的值为undefined。

④在ECMAScript5里面undefined为只读的

⑤undefined是一个预定义的全局变量,初始化值为undefined。并且是window.undefined下的一个属性。

7.全局对象

①全局属性:undefined,Infinity,NaN;

②全局的函数:isNaN,parseInt(),eval();

③构造函数:Date(),RegExp(),String(),Object(),Array()

④全局对象:Math,JSON

8.值类型的封装对象:Number,Boolean,String

值类型本身是不能赋予属性和方法的,但是我们常常可以获取字符串的长度,调用这些值类型的方法。为什么呢?因为调用一个字符串的方法或属性时,会创建一个临时的String或Number,Boolean对象。在使用完属性以后对象就被销毁。

undefined和null对象是没有对应的封装的对象的,任何调用属性的操作都会报异常TypeError。代码展示如下:

    var str = 'rutc'; //定义一个字符串
    str.len = 4; //创建一个临时的String对象,设置完len就销毁这个对象
    var t = str.len; //这里会使用原来的str创建一个String对象,但是len是在第二行代码的临时对象上创建的,所以现在获取len属性为undefined
    console.log(t); //undefined
    var strObj = new String(str);
    console.log(strObj == str); //true
    console.log(strObj === str); //false 值类型和引用类型严格来比较则不等

10.类型转换:javascript总是会装换对象为期望的类型

①null==undefined

②“0”==0 字符串会转换为number进行比较

③ 0==false 布尔值转换为number进行比较

④显示转换Number(“3″)——>3,String(false)——>”false”,Boolean([])——>true

⑤等效显示转换x+””,+x,!!x

11.变量作用域

①区别于C#,javascript的作用域以函数为单位,不是以{}为单位

②在同一个函数里面的变量定义,跟变量出现的先后位置没有关系,称为hoisted(英文意思:举起,升起)。例如

③作用域链:代码集合

javascript
作者:张雪飞
出处:https://zhangxuefei.site/p/35
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注