1. 变量

  在局部作用域中省略var操作符可以定义全局变量,但是这么做会导致该变量难以维护,且在严格模式下会导致抛出ReferenceError错误。

2. 数据类型(js共用6种数据类型,分别是 Undefined,Null,Boolean,Number,String,Object)

  2.1 typeof操作符

    对一个值使用typeof操作符可能会返回下列某个字符串:

□ "undefined" ---如果这个值未定义或者未初始化;

□ "boolean" ---如果这个值是布尔值;

□ "string" ---如果这个值是字符串;

□ "number" ---如果这个值是数值;

□ "object" ---如果这个值是对象或null;

□ "function" ---如果这个值是函数;

注:如果这个值是正则表达式,旧浏览器会返回"function",新浏览器会返回"object"。

2.2 Undefined类型

var message;  // 这个变量声明之后默认取得了 undefined 值
// 下面这个变量并没有声明
// var age; alert(message); // "undefined"
alert(age); // 产生错误
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"

  2.3 Null类型

① null值从逻辑上表示一个空对象指针,所以 typeof null 返回 "object",但是null instanceOf Object返回false;

② 实际上undefined值派生自null值,因此ECMA-262规定对它们的相等性测试要返回true,即 null == undefined 为true;

③ 当定义的变量在将来用于保存对象,那么最好将该变量初始化为null。

④ 最好使用null来初始化那些想将其暂时设置为空值的变量。

  2.4 Boolean类型

任何一种数据类型都可以调用Boolean()函数,在一些流控制语句(如if语句,while语句等)会自动执行相应的Boolean转换

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined 不适用 undefined

  2.5 Number类型

2.5.1 整数

① 八进制数以0开头,若后面的数值超出范围,那么前导零将被忽略,后面的数值当成十进制数值解析(如 070解析为56;079解析为79),且八进制字面量在严格模式下是无效的,会报错。

2.5.2 浮点数值

① js保存浮点数值需要的内存空间是保存整数值的两倍(4*2=8字节),以下两种情况下浮点数会被解析成整数

var a = 1.;  // 小数点后面没有数字,解析为1
var b = 10.0 // 解析为10

  ② 浮点数值最高精度是位小数,且进行算术运算时精确度远远不如整数,如0.1加0.2结果不是0.3 ,而是0.30000000000000004

  ③ 尽可能不用除法(/)和模(%)运算,因为大多数情况下它们直接导致出现浮点数。如果必须使用除法,立即用Math.round()方法回归整数运算。

2.5.3 数值范围

① ECMAScript能表示的最大值储存在Number.MAX_VALUE上;最小值储存在Number.MIN_VALUE上(能表示的最接近0的数,值为5e-324);超过这个范围视为无穷,其中正无穷表示为Infinity,负无穷表示为-Infinity,判断一个数是否是有穷的,可以使用 isFinite() 函数,返回true则是有穷的。

2.5.4 NaN

① NaN,即非数值是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)

② 任何涉及NaN的操作(例如NaN/10)都会返回NaN,且NaN与任何值都不相等,包括NaN本身。

③ isNaN()函数接受一个任何数据类型的参数,该函数会帮我们确定这个参数是否能被转换为一个数值,且该函数用于对象时会自动调用对象的valueOf()方法,然后确定返回的值是否可以转换为数值,如果不能,则基于这个返回值再调用toString()方法,再测试返回值。

2.5.5 数值转换

Number(param):参数param可以是任何数值类型,其转换规则如下

① 如果是Boolean值,true和false分别转换为 1 和 0 。

② 如果是数字,只是简单的传入和返回。

③ 如果是null,返回0。

④ 如果是undefined,返回NaN。

⑤ 如果是字符串,忽略前后空格,然后遵循以下规则:

      • 如果字符串中只包含数字,则将其转换为十进制数值,且忽略前导零,如果是十六进制格式,则将其转换为想通大小的十进制整数;
      • 如果字符串为空,则将其转换为0;
      • 其余皆转换为NaN。

⑥ 如果是对象,先调用对象的valueOf()方法,若返回原始值,则依照前面的规则转换,否则调用对象的toString()方法,若返回原始值则再依照上面的规则转换,否则将抛出错误。

parseInt(string, radix):参数string为字符串(可以为数字),radix为基数。转换时,它会忽略前面的空格,直至遇到第一个数字字符或者负号,若不是返回NaN,若是则继续解析第二个字符知道遇到非数字字符,另外,ECMAScript3识别以0开头的八进制数,ECMAScript5不识别,以下是例子。

以下结果均返回15:

parseInt(" 0xF", 16);
parseInt(" F", 16);
parseInt("17", 8);
parseInt("178", 8);
parseInt(021, 8); //注意这里021是数字不是字符串, parseInt("021", 8)返回的是17
parseInt("015", 10);
parseInt(15.99, 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
parseInt("12", 13);

以下结果返回NaN

parseInt("Hello", 8);
parseInt("546", 2);

以下结果在ECMAScript3返回0,在ECMAScript5返回8

parseInt("08");

parseFloat(string):parseFloat()与parseInt()类似,但是它始终都会忽略前导的零,且解析十六进制给事的字符串始终会被转换成0,如果字符串包含的是一个可解析为整数的数,parseFloat()会返回整数。toFixed(num)、toExponential(num)、toPrecision(num): 这是属于Number类的三个函数,可以使用它们对数字的精度进行调整并输出字符串,它们的参数各自接收一个数字,具体例子如下:

var n = 123456.789;
n.toFixed(0); // "123457"
n.toFixed(2); // "123456.79"
n.toFixed(5); // "123456.78900"
n.toExponential(1); // "1.2e+5"
n.toExponential(3); // "1.235e+5"
n.toPrecision(4); // "1.235e+5"
n.toPrecision(7); // "123456.8"
n.toPrecision(10); // "123456.7890"

  

2.5.6 String类型

① 字符串的特点:

var lang = "Java";
lang = lang + "Script";

以上示例中实现的操作过程如下:首先创建一个能容纳10个字符的新字符串,然后在这个字符串中填充"Java"和"Script",最后一步是销毁原来的字符串"Java"和字符串"Script",因为这两个字符串已经没用了。

② 转换为字符串:

toString():除了null和undefined,其他数值类型都有这个方法,多数情况下该方法不必传递参数。但是在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。如

var num = 10;
alert(num.toString()); // "10"
alert(num.toString(2)); // "1010"
alert(num.toString(8)); // "12"
alert(num.toString(16)); // "a"
alert(233.toString(16)); // 报错
alert((233).toString(16)); // "e9"

String(param):String()函数遵循下列转换规则:

      • 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果;
      • 如果值是null,则返回"null";
      • 如果值是undefined,则返回"undefined"。

2.5.7 Object类型

Object是所有对象的基础,因此所有对象都具有以下这些基本属性和方法:

constructor , hasOwnProperty(propertyName) , isPrototypeOf(object) , propertyIsEnumerable , toLocaleString() , toString() , valueOf()

① toString():数组类的toString()方法将每个数组元素转换为一个字符串,并在元素之间添加逗号后合并成结果字符串;函数类的toString()方法返回这个函数的源码字符串;日期类的toString()方法返回一个可读的日期和时间字符串;RegExp类的toString()方法将RegExp对象转换为表示正则表达式直接量的字符串。

② valueOf():大多数对象的valueOf方法返回的是对象的本身,Date类型返回1970年1月1日以来的毫秒数。

③ 对象转换为字符串先调用toString()方法,若返回原始值则把改值转换成字符串,否则调用valueOf()方法,若返回原始值则转换为字符串,若都不为原始值,报错。对象转换成数值也一样,不同点在于先调用的是valueOf()方法。

④ "+" 和 "==" 作为对象的运算符时不会像其他运算符那样默认把对象转换为数值,而是按照对象本身的原始值类型进行转换,如Date类型对象遇到 "+" 和 "==" 将默认转换为字符串。注意,是否转换为字符串取决于对象本身而跟运算符无关。

JavaScript基本概念(变量和数据类型)的更多相关文章

  1. 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...

  2. JavaScript的概念,引入,基本数据类型

    08.05自我总结 JavaScript 一.概念 JavaScript(下文我们会用简称JS来代替)是脚本编程语言,JS语言开发的文件是以.js为后缀,通过在html文件中引入该js文件来控制htm ...

  3. Javascript一(变量,数据类型,正则表达式,数据,语句)

    本文章适合具有一定程序编程语言基础的人士阅读,最好学完Java基础再来阅读本文章更容易理解语言初学者会看起来比较费劲,不易理解 一.导入脚本 在html导入Javascript的格式是: <sc ...

  4. 初学JavaScript从入门到放弃(一)JavaScript介绍、变量、数据类型

    一.JavaScript介绍 1.JavaScript:轻量级的客户端脚本语音 2.目前js已经不仅仅是客户语音,基于NODE可以做服务器端程序,所以Javascript是全栈编程语音 3.js及部分 ...

  5. JavaScript中的变量及数据类型

    转自:http://blog.csdn.net/mygis2005/article/details/7375419 JavaScript是一种弱类型的语言,变量名.操作符和方法名都区分大小写. 1.变 ...

  6. JavaScript学习笔记——变量和数据类型

    一.javascript命名规范 1. 严格区分大小写 2. 变量的命名必须以字母或 _或 $开头,余下的部分可以是任意的字母,数字,或者是 _或者是$ 3.不能用关键字或者是保留字命名. 4.jav ...

  7. JavaScript 基础知识 变量与数据类型

    一.区分大小写 JS中一切(变量/函数名/操作符)都是严格区分大小写的 二.标识符 变量.函数.属性的名字以及函数的参数 命名规则:1.第一个字符可以是字母.下划线.美元符号$ 2.其他的字符可以是字 ...

  8. 学习 JavaScript (三)核心概念:语法、变量、数据类型

    JavaScript 的核心概念主要由语法.变量.数据类型.操作符.语句.函数组成,这篇文章主要讲解的是前面三个,后面三个下一篇文章再讲解. 01 语法 熟悉 JavaScript 历史的人应该都知道 ...

  9. JavaScript变量与数据类型详解

    变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过变量名访问. 变量的作用就是用于存储值. 语法: 声明变量时,总是以关键字var打头.任何情况下都应该这样做.然后给变 ...

  10. javascript 核心概念(1)-数据类型

    语法 (1)到现在为止,大多数浏览器也还是支持到ECMAScript 第三版的标准. 核心概念就是一个语言的基本工作原理,涉及语法,操作符,数据类型. (2)javascript的一切--变量,函数名 ...

随机推荐

  1. iOS 生成.a文件

    一.新建一个工程,选择Cocoa Touch Static Library. 二. 三. 四. 五. 六. 七. 八. 九. 十. 十一. 十二. 十三.打开终端,输入以下命令将真机和模拟器中的.a合 ...

  2. 获得创建临时表的session id

    通过sql server的default trace和tempdb中的sys.objects视图,你能够获得创建临时表的session id,下面是相应的sql语句: DECLARE @FileNam ...

  3. WEB标准:标准定义、好处、名词解释、常用术语、命名习惯、浏览器兼容、代码书写规范

    1. WEB标准是什么? “WEB标准”是一系列标准的总称.一般的误区经常把WEB标准说成DIV+CSS.准确的说法应该是:采用W3C推荐的WEB标准中的XHTML1.1结合CSS2.0 样式表制作页 ...

  4. java poi 导入excel

    最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包  http://pan.baidu.com/s/1sjPuWDR pack ...

  5. MySql优化方案

    mysql优化方案总结 u       Mysql数据库的优化技术 对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索 ...

  6. 纯CSS3技术 加载中

    你能相信吗?这些都是由一个DIV元素实现的动画,纯CSS3技术 html  <div class="loader">加载中...</div> css: 图( ...

  7. 使用runtime 实现weex 跳转原生页面

    一.简述 最近项目组打算引入weex,并选定了一个页面进行试水.页面很简单,主要是获取数据渲染页面,并可以跳转到指定的页面.跟之前使用RN 相比,weex 确实要简单很多.从下图中我们可以看到,wee ...

  8. PHP根据身份证号码验证、获取星座、生肖和性别函数

    首先介绍一下身份证含义 新的18位身份证号码各位的含义:1-2位省.自治区.直辖市代码:3-4位地级市.盟.自治州代码:5-6位县.县级市.区代码:7-14位出生年月日,比如19670401代表196 ...

  9. 九章算法系列(#2 Binary Search)-课堂笔记

    前言 先说一些题外的东西吧.受到春跃大神的影响和启发,推荐了这个算法公开课给我,晚上睡觉前点开一看发现课还有两天要开始,本着要好好系统地学习一下算法,于是就爬起来拉上两个小伙伴组团报名了.今天听了第一 ...

  10. MEMS陀螺仪—MEMS产品中的杀手

    MEMS陀螺仪(gyroscope)将成为MEMS产品的杀手.它已经被大量地应用在消费和汽车产品上.它的性能每两年提高十倍,它的成本却由于集成度和需求量的提高而不断下降.一旦MEMS陀螺仪的价格下降到 ...