JS-2-数据类型

2019-01-15  本文已影响0人  学的会的前端

数据类型的分类

JavaScript语言的每一个值,都属于某一种数据类型。JavaScript的数据类型,共有六种:

var hello;//undefined
var empty = null;

原始类型(基本类型)和复杂类型(引用类型):

对象的划分

typeof运算符

javascript有三种方法,可以确定一个值到底是什么类型:

  1. 原始类型:
    数值,字符串,布尔值分别返回numberstringboolean
typeof 123 //"number"
typeof '123' //"string"
typeof false //"boolean"
  1. 函数:
    函数返回function
function f(){}
typeof f //"function"
  1. 空对象{},null,空数组,正则表达式,window:
    对于空对象{},null,空数组,正则表达式,window返回的是:object
    typeof {}//"object"
  2. 对于undefined:
    对于undefined,返回的是undefined。
    typeof undefined//"undefined"

写一个function,判断这个东西是不是函数

function f(){};
function isFunction(val){
  return typeof val === "function"
}
isFunction(f)//return true;

instanceof:判断一个变量是不是由某个构造函数创建的实例。

var o = {};
var a = [];
o instanceof Array // false
a instanceof Array // true

typeof undefined范例

v // "v is not defined"
typeof v // "undefined"
if (g){} //"g is not defined"
if (typeof g === "undefined"){} //undefined

null和undefined的区别:

  1. 区别和相同之处:
var a = undefined;
var a = null;
var hello // undefined
hello // undefined
var hello = null //undefined
hello //null
  1. 用法和含义
    对于nullundefined,可以大致理解成以下含义:
var i
i  // undefined

b: 调用函数时,应该提供的参数没有提供,该参数等于undefined

function f(x){consoloe.log(x)}
f() // undefined

c: 对象没有赋值的属性,该属性的值为undefined

var o = new Object();
o.p // undefined

d: 函数没有返回值时,默认返回undefined

var x  = f();
x // undefined

Boolean布尔类型:

  1. 两元逻辑运算符: && (And),|| (Or)
  2. 前置逻辑运算符: ! (Not)
  3. 相等运算符:===(绝对相等),!==,==(近似相等),!=
  4. 比较运算符:>,>=,<,<=

转换为false的类型

  1. undefined
  2. null
  3. false
  4. 0
  5. NaN
  6. ""(空字符串)
if(!""){console.log('ok')}
// undefined

上面代码的if命令后面的判断条件,预期应该是一个布尔值,所以JavaScript自动将空字符串转换为false,导致程序不会进入代码块,所以没有任何输出。

if ([]) {console.log('true')} //"true"
if ({}) {console.log('true')} //"true"

Number:数值类型

var a = 10; //十进制
var b = 073; // 0开头:八进制0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 
var c = 0xf3; // 0x开头:十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f 10 
// 0xf3 = 15*16 + 3 = 243
  1. 浮点数是指数字包含小数点,小数点后至少有一位,前面可以没有
var a = 0.27;
var b = .45;
  1. 对于极大或极小的数字可以使用科学计数法
    var a = 3.1e5; //310000
  2. 浮点数最高精度是17位,但是在计算的时候精度不如整数
    1-0.9; // 0.09999999999999998
    0.1 + 0.2 // 0.30000000000000004
  3. 做小数运算的时候,不要直接判断相等。
    if (a + b == 0.3){console.log('ok')}
    所以把小数改为整数在进行判断
    if(a*10 + b * 10 == 0.3*10){console.log('ok')}

数值的转换

  1. Number():
  2. parseInt():系统内置的函数
  3. parseFloat():系统内置的函数
  1. 忽略字符串前面的空白字符,找到第一个非空白字符
  2. 如果第一个字符不是-或者数字返回NaN
  3. 如果是继续解析,直到非数值模式为止
  4. 0开头的会当做八进制,0x开头的会当做十六进制,但是可以指定第二个参数指定基数
    parseInt('101',2) // 5,,,,paesrInt('-23AVD') // -23

string字符串类型:

string是Unicode字符组成的序列,俗称字符串,可以用双引号或者单引号表示,没有区别,匹配即可
var str = "hello"或者var str = 'word'

object 对象类型:

var obj = {
  name: "qishen";
  age: 2
}
  1. obj.name
  2. obj['name']
上一篇 下一篇

猜你喜欢

热点阅读