重零开始学前端-基础(1) 变量的类型和弱类型的概念

  那么刚才在文档中,编写了什么是变量,那么下一步我们继续深入,变量的特性和类型。

  首先,我们了解了变量可以存储数据,那么显而易见的问题就是,我们无法判断数据是什么类型。比如:文字、图片、数字,这就会为我们未来造成一个很麻烦的问题,比如 男人+飞机最后会得到什么东西?=》飞机杯

  

  所以的话我们需要一些特定的类型用来约束每个变量的意义和类型,那么javascript中的类型定义有多种和重复的概念,我们先重基础开发。

  首先的话,我们将具有相同特性的数据,称之为某一类的数据类型,数据类型根据特性分为:基本数据类型,复杂数据类型(涉及到引用 内存空间 和 取值方式,不建议大家现在纠结 后期有专题)。

  基本数据类型: string(字符串类型) number(数字类型) boolean(布尔类型) undefined(未定义) null(空对象)

  复杂数据类型:array(数组) object(对象) function(函数)

  那么我们就简单来描述一下每一种类型的特点(简述):

  首先是基本数据类型:

    string:字符串数据类型,用于描述文本,字段 格式为  双引号包含数字或文本 ,如 "你好" 、 "123" 、 "你好125"

    number:数字类型,用于描述纯数字(整数 非整数) 格式为直接数组 ,如  123,12.5,-24

    boolean:布尔类型,一般用于描述 是或非,真或假。格式只有两种如: true,false

    undefined:未定义,一般用于创建变量但是未对其赋值时描述,定义方式两种: var a; var b = undefined; 都属于未定义变量类型

    null:空对象,一般用于描述一个空的对象,容易与undefined造成误解。两者之间由于历史原因,有些渊源。我们可以理解为 占座人没来是null,和没人undefined。比如 这个位置有人么?如果回答是有人,换而言之就是有东西,但是是老师、学生、动物或者其他我们无法确定,所以一般是使用null来表示,那么undefined就是未定义,这个地方有人么?没有人,这样就好理解了。

  其次是复杂数据类型:

    array:数组类型,用于描述多个变量或类型的存储空间(篇尾描述在内存左右),使用中括号来描述,每个数据和数据之间使用逗号分离,var arr = [123,456]; var c =["你好","我也好"] 。

    object:对象类型,用于描述某一个类型的实例数据,如:人/车/动物等等。var o = {name:"张三",age:17} (不建议现在理解  过过~~~~)

    function:函数对象,用于描述功能,对外抛出访问接口进行调用。

  

  注:定义变量一般使用var关键字,后面的定义方式不建议。var a = 123;(建议)  b= 456;(不建议)

  那么以上就是数据类型的简单描述,后期每一个数据类型都会有单独的文章作为描述

  那看到上面的内容我们很明显能看到一个问题,就是变量的定义是随意的,比如当我们赋值a为字符串,那么a就是字符串数据类型,如果给a赋值为数字,那么a就是数字类型,这也就是我们所说的弱类型。

  变量的数据类型由赋值所给的类型进行定义,并且是可修改的,所以javascript是弱类型数据语言。

  那么紧随其后,我们在编写代码的时候很容易发现变量的改变,比如当我们在定义一个变量a以后,如果要对其的值进行更改,是否从新使用var进行定义呢?

  答案是否的。在浏览器中,一般对变量只使用一次var进行定义变量,后期如果使用的时候 直接调用变量的名称就可以了。

  

 

  在这段代码中,我们就使用了var关键字定义了一个变量a,并且赋值为一个你好的字符串,在后期使用的时候,我们发现a的值可能需要修改,所以我们调用a使用等号为其重新赋值,这种方式我们成为重新赋值。

  注:重新赋值和不适用关键字定义还是有区别的。

  刚才我们也简单介绍了基本数据类型和赋值数据类型,那么两者之间有什么区别呢?

  以当前来说,还是只能给大家粗暴描述,基本数据类型是复杂数组类型的组成部分。

  我们可以理解为 基本数据类型是 氧气 氮 氢气 ,复杂数据类型是 二氧化碳 空气 水。简单来说就是基本数据类型是组成复杂数据类型的一部分原件,并且在内存(浏览器运行,数据保存在电脑中的虚拟位置)中复杂数据类型的定义也会节省一部分空间。

  

  那么在未来我们需要一些特定的场景来判断一个变量的类型,应该如何处理呢?

   javascript中为我们提供了两个方法用来判断当前的数据类型 typeof 和 instanceof

  typeof:操作符返回一个字符串,指示未计算的操作数的类型,一般用于判断变量当前数据类型。

  instanceof:运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性(暂不适用了解)。

  

var a = "你好";
typeof a   //string
typeof(a)  //string
var x = truel
typeof x;  //boolean

  如果想看到效果 可以使用alert(typeof(a)) 实现

 

posted @ 2017-02-23 10:43  做一名靠谱的大前辈  阅读(378)  评论(0编辑  收藏  举报