数据类型

1、数据类型

 

ECMAScript中有5中简单数据类型(也称为基本数据类型): UndefinedNullBooleanNumber、String。还有1中复杂的数据类型————ObjectObject本质上是由一组无序的名值对组成的。

 

其中UndefinedNullBooleanNumber都属于基本类型。ObjectArrayFunction则属于引用类型,String(引用类型)有些特殊,具体的会在下面展开分析。

 

typeof 操作符

由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
通过typeof关键字,对这5种数据类型会返回下面的值(以字符串形式显示)
u ---------- 如果值未定义 Undefined

boolean ---------- 如果这个值是布尔值 Boolean

string ---------- 如果这个值是字符串 String

number ---------- 如果这个值是数值类型 Number

object ---------- 如果这个值是对象或 null  Object(Array,Function....)

需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用。

 

虽然Boolean类型的字面值只有两个,但JavaScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用类型转换函数Boolean()

一般可以用来判断一个字符串是empty or null or undefined:

function USER(inArgs) {
    if (!inArgs) {  // 如果参数inArgs 传进来是" "(空字符串),那么就返回false.
        return getErrorForText(-196, "Invalid parameter. Cannot be empty");
    }
}
数据类型转换为true的值转换为false的值
Boolean true false
String 任何非空的字符串 ""(空字符串)
Number 任何非0数值(包括无穷大) 0和NAN
Object 任何对象 null
Undefined 不适用 undefined

 

使用!!操作符转换布尔值
!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;

对null与undefined等其他用隐式转换的值,用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于将这些值转换为“等价”的布尔值;

var foo;  
alert(!foo);//undifined情况下,一个感叹号返回的是true;  
console.log(!!foo);//返回false
var o = null;
alert(!o);//null情况下,一个感叹号返回的也是true;  
alert(!!o); //返回false;
var o={flag:true};  
var test=!!o.flag;//等效于var test=o.flag||false;  
alert(test);

 

 

 Number:

这种类型用来表示整数和浮点数值,还有一种特殊的数值,即NaN(非数值 Not a Number)。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。

NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。例如,下面的代码会返回false。

alert(NaN == NaN);    //false

 

 

1.1 字符串

var str = new String('abc');
console.log(typeof str);//object

var str = 'abc';
console.log(typeof str);//string

注意,typeof 变量 如果值是"string" 的话,也就是这个变量是字符串,在Javascript中,字符串是基本类型,而在C#或Java中,字符串是引用类型,但是Javascript中的String是引用类型,因为它是Javascript中定义好的基本包装类型,在C#中,String跟string其实是一样的。

  1. 正常字符串用单引号,双引号包裹
  2. 转义字符  \         \'  \n  \t    ( \u4e2d (中) \u#### Unicode字符)(\x41  A  Ascii码)
  3. 多行字符串编写

      //tab 上面esc键下面 `

      var mes = `hello

           world

           你好呀`

  4.模板字符串

    var name = 'Joyce';

          var msg = `Hello ${name}`;
          console.log(msg);//Hello Joyce
 
  5.字符串长度
    var student = 'student';
    student.length;
  6.字符串的不可变性
     

 

 

 

 

 

 

1.2 数组

    //检测是否为数组
    // 1.instanceof 运算符,用来检测
    var arr = [];
    console.log(arr instanceof Array);
    // 2. Array.isArray()
    console.log(Array.isArray(arr));

 

  

 

 

 

 

 

 

 

 

 

 

    1.3 对象

    

    

 js中对对象取值的两种方式:

person['age'];
person.age;

 

 

 

 

 调用对象的元素的两种方式:person.name/person['name']

 

 

 

 

 

 

 

 

 


 

 

posted @ 2020-08-28 21:24  Joyce502  阅读(235)  评论(0)    收藏  举报