数据类型

Number

JS不区分整数和浮点数,统一用Number。

123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

Number可以直接做四则运算,规则和数学一致。

字符串

字符串是python风格的。单引号括起来和双引号括起来均可。

布尔值

true和false。 包括逻辑运算符也与C风格的完全一致。&&、||、!

比较运算符

其他等同C语言。但是在比较是否相等时要好好说道说道。
JS有两种相等运算符,一种是==,一种是===
==会自动转换数据类型再进行比较,所以可能会得到奇奇怪怪的结果。
===不会自动转换类型,如果类型不同,直接返回false.
这是个JS设计的缺陷,我们要始终用===进行比较。

运用相等运算符时有个例外。NaN这个特殊的Number值,竟然与NaN不相等。
判断是否是NaN只能用isNaN(NaN);这个函数。它会返回true指示这是个NaN。

最后我们要特别注意浮点数相等的比较。
(1/3) === (1-2/3)会返回false.因为浮点数在计算过程中会有误差。
要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:

Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true

null和undefined

null表示值为空,undefined表示值未定义。并没有什么卵用。undefined仅仅在判断函数参数是否传递的情况下有用。没传递自然是未定义了。

数组

js的数组和python的list类似,不要求元素类型相等。
以下是一个合法的js数组。

[1, 2, 3.14, 'Hello', null, true];

还可以用Array函数创建数组,但是可读性很差劲。

new Array(1, 2, 3); // 创建了数组[1, 2, 3]

对象

JS的对象类似于python的字典:

var person = {name: 'Bob',age: 20,tags: ['js', 'web', 'mobile'],city: 'Beijing',hasCar: true,zipcode: null
};

是键值对的无序集合。
JavaScript对象的键都是字符串类型(无需用引号包裹,自动就是字符串),值可以是任意数据类型。上述person对象一共定义了6个键值对,其中每个键又称为对象的属性。
要获取一个对象的属性,我们用对象变量.属性名的方式:

person.name; // 'Bob'
person.zipcode; // null

变量

命名规则同Java语言一样。
字母、数字、下划线、$符号组成,数字不打头。
申明一个变量用var语句。
在JavaScript中,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次:

var a = 123; // a的值是整数123
a = 'ABC'; // a变为字符串

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。
和静态语言相比,动态语言更灵活,就是这个原因。
要显示变量的内容,可以用console.log(x),打开Chrome的控制台就可以看到结果。
MAC-Chrome打开控制台:option+command+I(i)
使用console.log()代替alert()的好处是可以避免弹出烦人的对话框。但是其实效果都是差不多的。

strict模式

JS的设计缺陷:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量:

i = 10; // i现在是全局变量

怎么启动strict模式?
在JavaScript代码的第一行写上:

'use strict';

这是一个字符串,不支持strict模式的浏览器会把它当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式运行JavaScript。

0x03数据类型和变量相关推荐

  1. JavaScript - 数据类型和变量

    计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数 ...

  2. python数据类型变量_python的数据类型与变量

    计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形. 音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的 ...

  3. python的数据类型和变量

    python的数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种 ...

  4. Java复习二 基本数据类型与变量和常量

    Java基本数据类型 Java变量与常量 Java基本数据 整数类型 用来存储整数的数据类型,既可以是正整数,又可以是负整数和0,但是不可以为浮点数.整数常量在Java中有三种表现形式:十进制,八进制 ...

  5. group by rollup 变量名为空值_【Python学习笔记】07、数据类型和变量

    在Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,包括负整数,例如:1,100,-8080,0,等等. 计算机由于使用二进制,所以,有时候用十六进制表示整 ...

  6. Scala基础教程(二):数据类型、变量

    基础语法 关于Scala程序,这是非常要注意以下几点. ·        区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义. ·      ...

  7. 嵌入式c语言为什么变量定义在前面,嵌入式C语言数据类型和变量详解

    原标题:嵌入式C语言数据类型和变量详解 一般来讲,标准的C语言类型在嵌入式编译器中是合法的.但由于嵌入式控制器的受限环境.嵌入式c语言的变量和数据类型具有新的特征,这些特征体现在如下方面. 嵌入式C语 ...

  8. python的数据类型和变量的定义及使用

    一.数据类型按数值非数值分类 1.python的数据类型可以分为 数字型 和 非数字型. 数字型 整型 (int) 浮点型(float) 布尔型(bool) 复数型 (complex)(主要用于科学计 ...

  9. python 声明变量类型_python基础学习03数据类型和变量

    数据类型和变量 1. 数据类型 1.1 整数 Python中不限制整数正负及大小,例如:1,-1,100,-100等等.计算机常用十进制和十六进制表示数值,比如十六进制表示方法是用前缀0x加后缀0-9 ...

最新文章

  1. Intel GPU实现游戏与数据中心
  2. 使用.NET REACTOR制作软件许可证
  3. 9.Matlab中的repmat,clock,rand以及seed,state,twister参数
  4. CCD工业相机、镜头倍率及相关参数计算方法
  5. 人工智能不是单纯的经验和总结
  6. C语言 malloc动态申请内存,存放数组
  7. 【cocos2d-x从c++到js】06:Google的继承写法解析
  8. 在github上托管Maven存储库(包含源代码和javadoc)
  9. 【C语言】str类与men库函数的实现(如:strcpy,strcmp,strstr,strcat,memmove,memcpy)
  10. MySQL定义数据库对象之指定definer
  11. L1-022 奇偶分家 (10 分) — 团体程序设计天梯赛
  12. 为什么要用 enable_shared_from_this ?
  13. 【数字信号调制】基于matlab GUI 2ASK+2FSK+2PSK调制解调仿真【含Matlab源码 1504期】
  14. 南京大学计算机专业推免生,南大计算机系招收2014级研究生外校推免生复试名单...
  15. ncie全国计算机等级考试,国家信息化工程师认证考试(NCIE)
  16. 使用MindStudio进行MindX SDK财务票据OCR识别开发
  17. 马士兵_JAVA自学之路
  18. ElasticSearch 技术分析与实战 读后感
  19. css之如何清除浮动
  20. alter table新增字段操作究竟有何影响?(上篇)

热门文章

  1. 2015.8.23——张佳莉
  2. iOS 战斗机跑车效果
  3. Win10开始菜单卡死解决办法
  4. vxworks下的脚本script创建和使用(相当于windows下的autoexec.bat)
  5. mysql 中auto_mysql中的auto_increment
  6. mysql increment_mysql中auto_increment是干什么的?
  7. 基于ssm手机供应商管理系统
  8. ECCVW 2022 | 第二届城市规模点云语义理解挑战赛
  9. java awt canvas_java.awt 类 Canvas - Java 中文参考手册
  10. Mac设置命令行代理