首页 > 编程语言 >【三】JavaScript之数据类型

【三】JavaScript之数据类型

时间:2023-07-04 14:37:10浏览次数:52  
标签:console log JavaScript 数据类型 js typeof 数组 var

【三】JavaScript之数据类型

【0】数据类型展示

  • javascript中变量的值有不同的作用或者功能。
  • 按不同的功能,值也可以区分不同的类型。
类型 名称 描述
Number 数值型 整数,浮点数。。。。
String 字符串 文本,一般使用"双引号",'单引号'或者反引号圈起来的都是文本。
Boolean 布尔值 用于逻辑判断结果,值只有truefalse,注意:首字母不能大写!!
Array 数组 类似python的列表,但是在js中数组属于对象的其中一种。
Object 对象 类似python的字典,但是在js中万物皆为对象。
null 类似python的None,表示什么都没有。
undefined 未定义 变量在未定义时直接使用,则值就是Undefined
  • javascript中提供了一个关键字typeof,可以让我们查看变量值的类型

typeof 这是一个关键字,但是用法类似函数,有返回值,返回值就是数据的类型。只能用于查看布尔型,字符串和数值类型,像数组、对象是无法查看的。

(1)Number类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
var num1 = 100; //
var num2 = 1.33;
var num3 = 0;
var num4 = -1.33;
var num5 = 1.3e10;
var num6 = 133_200_100;
console.log( typeof num1 ); // number
console.log( typeof num2 ); // number
console.log( typeof num3 ); // number
console.log( typeof num4 ); // number
console.log( typeof num5 ); // number
console.log( typeof num6 ); // number

// 数值类型支持算数运算
console.log(num1+100); // 加法运算
console.log(num1-100); // 减法运算
console.log(num1*100); // 乘法运算
console.log(num1/100); // 除法运算
console.log(num1%3);   // 取模,求余运算
console.log(num1**3);  // 幂运算

</script>
</body>
</html>

(2)String类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
// 字符串在js中有2种,分别是单行字符串(普通字符串)与多行字符串(文本字符串、模板字符串)。
// 其中,单行字符串可以使用单引号或双引号圈起来就是单行字符串。
// 使用反引号圈起来的,就是多行字符串。

// 单引号声明字符串
var str1 = 'hello world';
console.log(typeof str1); // string

// 双引号单行字符串
var str2 = "hello world";
console.log(typeof str2); // string


// 多行文本字符串
var str3 = `hello world`;
console.log(typeof str3); // string

// 字符串的使用注意事项.
// 1. 单行字符串,内容是不能换行的。所有的换行通过转义字符\r\n来完成.
var str4 = "hello\r\nworld";
console.log(str4);


// var str5 = "hello
// world";   // 这里报错,单行字符串内部不能内容换行,必须保证引号开始与结束在同一行出现

// 2. 多行文本字符串中编写变量会被js识别转换成值
var str5 = 'world'
var str6 = `hello ${str5}`; //hello world  写在多行文本字符串中的 ${变量名}会被js进行识别并转换成变量的值
console.log(str6);

// 3. 单行字符串中编写变量是不会被js识别的。
var str7 = "world"
var str8 = "hello ${str7}"
console.log(str8); // hello ${str7}

</script>
</body>
</html>

(3)Boolean类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
// 表示逻辑运算或者比较以后产生的结果。只有2个值。
// true,表示真,正确,成立.
// false,表示假,错误,不成立。
var ret1 = true;
console.log( ret1, typeof ret1);  // true "boolean"

var ret2 = false;
console.log( ret2, typeof ret2);  // false, "boolean"

// 布尔值是一个关键字,也叫字面量,不能加上引号,否则会被当成字符串!!
var ret3 = 'true';
console.log( ret3, typeof ret3 ); // true string

// 与python不同,布尔值不能首字母大写,必须全部小写!
// 而且python3中的布尔值实际上就是数值类型,但是js中布尔类型就是独立的数据类型,
// 当然因为js是属于弱类型语言,可以布尔值转换成整型而已。

var ret4 = 1 > 2;
console.log(ret4, typeof ret4); // false "boolean"

var ret5 = 1 < 2;
console.log(ret5, typeof ret5); // true "boolean"


</script>
</body>
</html>

(4)Array类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
// 数组代表的是一组数据,这组数据可以有0或多个。数组中的数据也叫成员,
// 类似python里面的列表,数组里面有多个成员。每个成员的值可以是任意类型。

// js的数组有2种声明方式:
// 1. 字面量声明方式
// 格式:var 变量名 = ["成员1",成员2....]

// 0个成员的空数组
var arr0 = []
console.log(arr0, typeof arr0); // [] "object"
// 注意:js中无法通过typeof辨认区别数组与对象的区别,因为数组就是一种对象。

// 数组可以有多个成员
var arr1 = ["苹果","香蕉","梨子","水牛"]
console.log( arr1, Array.isArray(arr1) );  // ["苹果", "香蕉", "梨子", "水牛"] true
// 通过Array数组类的isArray方法可以用于判断指定变量是否是数组,true表示是数组,false表示不是数组


// 2. 通过Array函数,创建数组
var arr2 = Array(); // Array本身就是一个用于创建对象的函数,虽然叫类,但实际上内部就是函数,也可以不使用new关键字
console.log(arr2, Array.isArray(arr2)); // [] true

// 有成员的数组
var arr3 = Array("苹果","香蕉","梨子","水牛"); // 函数中的参数中传递数组的成员
console.log( arr3, Array.isArray(arr3) ); // ["苹果", "香蕉", "梨子", "水牛"] true


// 3. 通过new Array来创建,创建数组对象
// 空数组
var arr4 = new Array(); // new 表示创建,新建
console.log(arr4, Array.isArray(arr4)); // [] true

// 有成员的数组
var arr5 = Array("苹果","香蕉","梨子","水牛"); // 函数中的参数中传递数组的成员
console.log( arr5, Array.isArray(arr5) ); // ["苹果", "香蕉", "梨子", "水牛"] true


// 创建指定成员数量的数组
var arr6 = new Array(3); // 此处的3并非成员,而是表示创建有3个成员的数组,默认三个成员都是null的
console.log( arr6, Array.isArray(arr6) ); // [empty × 3] true


// js中的数组的使用,类似python的列表,也可以通过下标来获取指定位置的成员。
// 下标都是从0开始,逐一递增,但是js中的数组不支持切片或者负数下标
var arr7 = ["苹果","香蕉","梨子","水牛"]
console.log(arr7[0]); // 获取第1个成员的值
console.log(arr7[1]); // 获取第2个成员的值


// js的数组同时也可以通过下标来修改对应位置的成员的值。
arr7[0] = "小苹果";
console.log(arr7);
arr7[3] = "大水牛";
console.log(arr7); // ["小苹果", "香蕉", "梨子", "大水牛"]

// js中如果设置-1,实际上并不代表原来的数组的最后一个成员,而是表示新增了一个下标为-1的成员
arr7[-1] = "hello"
console.log(arr7);

// js中的数组是对象,所有数组中的下标实际上就是属性,下标对应的成员值就是属性值
arr7["money"] = 200
console.log(arr7) // ["小苹果", "香蕉", "梨子", "大水牛", -1: "hello", money: 200]

// 获取数组的成员个数,也就是数组的长度,当然,仅仅只是计算下标的成员数量,像负数下标,或字符串格式的下标,会被认为是非数组成员,而是对象的属性。
console.log(arr7.length)

// 所以,建议使用js中的数组时,尽量不要添加负数下标或者字符串下标的成员进来,会影响长度计算。
arr8 = ["小苹果", "香蕉", "梨子", "大水牛"]
console.log(arr8);

// 基于数组的长度,我们就可以随时获取数组的最后一个成员了。
console.log(arr8[arr8.length-1])  // 大水牛

// 数组的成员也可以新增或追加
// 通过指定新的下标来新增数组成员
arr9 = ["苹果"]
arr9[1] = "香蕉"
arr9[2] = "葡萄"
arr9[5] = "梨子" // 注意:尽量不要跳数字下标添加数组成员,否则跳过的数字下标会被认为空成员记录到数组,影响数组的长度计算。
console.log(arr9)  // ["苹果", "香蕉", "葡萄", empty × 2, "梨子"]

// 建议追加数组成员
arr10 = ["苹果"]
arr10[arr10.length] = "香蕉"
arr10[arr10.length] = "哈密瓜"
console.log(arr10)

// 通过数组提供的push方法来追加数组成员
arr11 = ["苹果"]
arr11.push("香蕉")
arr11.push("梨子", "水牛")
console.log(arr11) // ["苹果", "香蕉", "梨子", "水牛"]

// 通过数组提供的unshift方法在数组的左边插入成员
arr12 = ["苹果"]
arr12.unshift("香蕉")
arr12.unshift("梨子", "水牛")
console.log(arr12)  // ["梨子", "水牛", "香蕉", "苹果"]

// 删除成员[不要使用delte删除,不干净,会影响计算数组长度]
arr13 = ["A", "B", "C", "D"]
delete arr13[1]
console.log(arr13)

// 使用数组提供的方法删除成员
arr14 = ["A", "B", "C", "D"]
arr14.shift() // 删除左边第一个成员
arr14.shift() // 删除左边第一个成员
console.log(arr14)  // ["C", "D"]

// 删除数组的最后一个成员
arr15 = ["A", "B", "C", "D"]
arr15.pop()
console.log(arr15)  // ["A", "B", "C"]

// 删除数组的指定下标的指定数量成员
arr16 = ["A", "B", "C", "D"]
arr16.splice(2,1)  // 从下标为2开始删除1个成员,当然splice是一个高级函数,提供了数组的删除操作以后,还有新增,替换等功能
console.log(arr16)

// 嵌套数组,js中的数组与python一样,可以嵌套多层
arr17 = [
    [1,2,3],
    [4,5,6],
    [7,8,9]
]
console.log(arr17)
console.log(arr17[1])    // 访问第一个成员
console.log(arr17[1][2]) // 访问第一个成员数组的第二个成员

</script>
</body>
</html>

(5)Object类型

表示的是一个事物或者有一个概念相关的数据.对象内部有对应事物或者概念的特征[属性]和行为[方法]
对象的方法/动作,就是函数。
对象的特征/属性,就是变量。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
// 与python不一样,js的对象不需要不依赖于类的创建,也就是说可以直接创建对象,也可以使用类创建对象。
// 常用的声明对象的方式有4种。
// 1. 通过花括号字面量来声明
// 空对象,没有任何属性或方法的对象
var obj0 = {}
console.log(obj0);

// 有属性,但没有方法的对象
money = 100
var obj1 = {
    name: "晓明",
    age: 30,
    sex: true,
    money, // money: money, 当对象的属性值是一个变量,并且变量与属性名一样,则可以简写
    lve: ["苹果","香蕉","雪梨","水牛"], // 对象的属性成员可以是任意类型,也可以是数组或其他对象
    gf: {
        name: "小白",
        age: 28,
        sex: false,
    },
}

console.log(obj1);


// 有属性,有方法的对象
var obj2 = {
    name: "晓明",
    age: 30,
    sex: true,
    lve:["苹果","香蕉","雪梨","水牛"],
    say(){ // 对象的方法,js中声明函数类似与python,但是def换成function
        return "hello world";
    },
    walk(){ // 对象的方法的简写方式,walk: function(){ 的简写
        return "我在走路!!"
    }
}

console.log(obj2);


// 2. 通过Object来创建对象
var obj3 = Object();  // 空对象
// 对象可以追加属性或方法的
obj3.name = "小白";
obj3.age = 28;
obj3.sex=false;
obj3.say = function(){
    return "hello world";
}
obj3.walk = ()=>{  // function() { 的 简写方式,但是与普通的函数声明有细微区别,后面学到函数的时候我们再讲
    return "我在走路!!"
}
console.log(obj3);


// 2.1 通过new Object来创建对象
var obj4 = new Object();  // 空对象
// 对象可以追加属性或方法的
obj4.name = "小黑";
obj4.age = 16;
obj4.sex=true;
obj4.say = function(){
    return "hello world";
}
obj4.walk = ()=>{  // function() { 的 简写方式,但是与普通的函数声明有细微区别,后面学到函数的时候我们再讲
    return "我在走路!!"
}
console.log(obj4);

// 3. 通过构造函数来创建
function Humen(name, age, sex){ // 类似以前在python里面的__init__方法。
    this.name=name;  // this,一个代表当前对象的伪变量,类似python的self
    this.age=age;
    this.sex=sex;
    this.say=function(){
        return "hello world";
    }
}

var obj5 = new Humen("小红",27,false);
console.log(obj5);


// 4. 先有类,后有对象
class Person{  // Humen类名,相当于上面的函数名
    constructor(name, age, sex) { // constructor,构造函数,相当于python的__init__方法
        // js对象的初始化属性操作全部写在这里
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    say(){ // js中的对象方法
        return "hello world";
    }
    walk(){
        return "我在走路";
    }
    desc(){
        // 当前对象调用自身的方法或属性,直接使用this调用即可
        return `我叫${this.name},我今年${this.age}岁。`
    }
}

// 基于类创建对象
obj6 = new Person("小兰", 18, false)
console.log(obj6)

// 对象的属性调用
console.log(obj6.name)
// 对象的方法调用
console.log(obj6.desc())
// 对象的属性可以更改
obj6.name = "李小兰"
console.log(obj6.desc())

</script>
</body>
</html>

(6)undefined类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // undefined表示未定义,在js中,变量为undefined的情况有2种:
    // 1. 声明了一个变量,但是没有给变量进行赋值
    var num;
    console.log(num, typeof num); // undefined "undefined"
    // 2. 对一个变量的值,明确定义为undefined
    var data = undefined;
    console.log(data, typeof data); // undefined "undefined"  这种情况往往用于删除var或let关键字声明的变量

    // 3. 特殊情况,当如果一个变量出现时没有使用var或let关键字进行声明时,
    // 此时如果通过delete关键字删除变量,则变量就会被删除掉。同时该变量的类型就会变成undefined
    age = 16;
    console.log(age, typeof age); // 16 "number"
    delete age;
    console.log(typeof age); // undefined
    // console.log(age); // 此处报错,被delete删除的age,不能直接被使用了。

    // 补充,delete是js用于提供给开发者删除属性或者成员的关键字
    // delete可以删除对应的属性或者数组的成员
    data = [1,2,3,4]
    delete data[2]
    console.log(data) // [1, 2, empty, 4] 被删除的成员为空
    console.log(data[2], typeof data[2]);  // undefined "undefined"

    // js中的对象与json格式类似,但是与json不一样的时,json的属性必须是字符串,而js中的属性可以是任意类型的数据
    var obj = {"name":"小明", "age": 16, 1:2}
    console.log( obj, typeof obj)
    console.log(obj[1]); // 当如果对象中存在字符串以外的属性,则获取当前属性可以通过中括号来提取,操作类似python的字典

    delete obj.name
    console.log(obj.name, typeof obj.name); // undefined "undefined"
    // 换句话说,就是访问一个不存在的数组成员或者对象的属性时,值为undefined
    console.log(obj.sex, typeof obj.sex); // undefined "undefined"

    // 为什么delete不能删除var或者let声明的变量,但是可以删除不使用var或let声明的变量呢?
    // money = 200; // 实际上,这个根本就不是在声明一个变量,而是声明了一个对象的属性
    this.money = 200;   // 上一句代码相当于当前这句代码
    console.log(money); // 200

    // 那么,这个this代表的对象是谁呢?
    console.log(this);
    // Window对象。叫浏览器窗口对象,
    // 实际上我们在打开HTML网页时,由浏览器引擎会自动创建浏览器窗口页,那么管理这个窗口页的对象,就是window对象
    console.log(window); // window是一个超全局对象,我们所编写的js代码实际上就是写给window的。
    // 因此,我们声明的变量,实际上就是给window添加了一个属性
    
</script>
</body>
</html>

(7)null类型

  • 空,相当于python的None,就是什么都没有。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // 表示,什么都没有。
    // 类似python里面的None
    // 在js中,除了明确给一个变量赋值给null,才有null存在,用于变量的初始化
    var v1 = null;
    console.log(v1);  // null
    console.log(typeof v1) // object,typeof也无法查看null类型
</script>
</body>
</html>

标签:console,log,JavaScript,数据类型,js,typeof,数组,var
From: https://www.cnblogs.com/dream-ze/p/17525630.html

相关文章

  • 【十】JavaScript之内置对象
    【十】JavaScript之内置对象【1】内置对象build-inObject,也叫内建对象,由浏览器提供给开发者直接使用的。文档地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects【2】Number数值对象,在js中一切的数值类型数据,都附带Number对象的......
  • 【九】JavaScript之对象
    【九】JavaScript之对象【1】对象js中,虽然是函数优先的编程语言,但是使用上也是基于对象的所以在js中也存在万物皆为对象的情况。【2】对象的创建<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><bo......
  • 【八】JavaScript之函数
    【八】JavaScript之函数【1】函数javascript被称为披着面向对象的皮的函数式编程语言,是函数优先的编程语言,所以本质上js中的一切都是基于函数构建出来,所以函数本身也是对象,也是一等公民。function,是类似变量一样的容器,代表了一段具有指定功能的代码段。【2】函数使用的......
  • 【七】JavaScript之异常判断
    【七】JavaScript之异常判断【1】异常捕获文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/try...catchjs中提供了三种异常处理的写法:try...catchtry...finallytry...catch...finallytry{//尝试执行的代码}catch(e){//......
  • 【六】JavaScript之流程控制
    【六】JavaScript之流程控制【1】语句块{//语句块,会作为一个整体来执行。}判断语句/分支语句idswitch循环语句/遍历语句【2】判断语句/分支语句【2.1】if语句//if中的条件的运算结果只会是布尔值if(条件){//条件结果为true执行这里的代码}if(......
  • 【十二】JavaScript之BOM
    【十二】JavaScript之BOM【1】什么是BOMBOM(BrowerObjectModel,浏览器对象模型),主要是浏览器中js解释器提供给开发者调用浏览器功能的对象或接口方法因为旧版本浏览器厂商实现不一样,所以有可能存在同一段代码在不同旧浏览器下的结果不一致的兼容问题。当然现代浏览器几乎......
  • 【十一】JavaScript之案例-todolist
    【十一】JavaScript之案例-todolist基本页面<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>body,ul,input{margin:0;padding:......
  • 【十四】JavaScript之DOM中的事件操作
    【十四】JavaScript之DOM中的事件操作【1】事件操作所谓的事件(Event),其实就是用户与浏览器之间的一次交互过程或交互行为。例如:用户输入一段内容,用户鼠标晃动一下等等。js中提供了大量的事件操作给开发者,在用户发生事件操作以后,进行反馈,响应。事件类型有很多,但是操......
  • 【十三】JavaScript之DOM
    【十三】JavaScript之DOM【1】DOMDOM(DocumentObjectModel,译作文档对象模型),这部分内容主要是学习document对象提供给开发者操作html/xml文档的方法属性或子对象来完成动态特效的。当然这部分代码在不同浏览器下的效果几乎一样,除了IE。元素操作[元素的获取,元素的属性......
  • web开发基础笔录(5)-Javascript(1)
    目录概述概述JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。......