JavaScript变量和数据类型
1.JavaScript变量
javascript的变量是松散类型的(弱类型),也就是说一个变量可以用来保存任何类型的数据,每个变量仅仅是用来保存值的占位符。变量的声明用var操作符来定义,如 var message;也可以多个变量一起定义,如var a,b,c;用逗号隔开每个变量。
var message ;
var message;//message为初始化,值为undefined
message=12;//message值为12;
message="hello";//message 值为hello;
message=["hello",12];//message值为数组
上面的代码解释了JavaScript变量为松散类型的,可以有不同类型的值。若在定义变量的时候不用关键字var,则该变量为全局变量,不建议使用太多的全局变量,不容易管理,造成代码混乱;同时太多的全局变量会占用大量内存,因为全局变量直到页面被销毁,全局变量才被销毁。
a=12;//此时a为全局变量
2.JavaScript数据类型
undefined类型
undefined类型是只有一个特殊的值undefined。一个变量被声明,但是没有被赋值,则值为undefined。如
var name;
console.log(name==undefined);//输出true
上面的定义等价于 var name=undefined,undefined是一个特殊的值。需要说明的是undefined的变量,与未定义的变量是有区别的。未定义的变量不能直接使用,会产生异常。
var name;
console.log(name==undefined);//输出true
console.log(sex);//报错, sex is not defined
当然,使用typeof获取变量的值类型时候,未定义的变量的值和已经定义(未初始化)变量的值都为“undefined”。
var name;
console.log(name==undefined);//输出true
console.log(typeof sex);//输出'undefined'
console.log(typeof name);//输出'undefined'
Null数据类型
Null数据类型也是只有一个值的数据类型,这个值是null。从逻辑角度看,null表示一个空指针。typeof null 会返回“object”;
var age=null;
console.log(typeof age);//输出'undefined'
Boolean类型
Boolean类型在JavaScript中使用非常多的数据类型,它包含两个值true和false。true不一定是数字值1,false也不一定是数字值0。
数据类型 |
转换为true |
转换为false |
---|---|---|
Boolean |
true |
false |
String |
非空字符串 |
“” |
Number |
任何非零数字值(包括无穷大) |
0和NaN |
Object |
任何对象 |
null |
Undefined |
n/a |
undefined |
Nunber类型
Number类型用来表示整数和浮点数。在 JavaScript 中,整数值和浮点值之间没有区别,JavaScript 数字可以是两种类型中的任意一种。
number数据类型可以用来表示十进制的数,如var num=1; var num1=1.2;除十进制外,number还可以表示八进制以及十六进制的整数。八进制的值第一位用0来表示,后面可以用0-7的字面值来表示,如果字面值超出了范围,则0被忽略,当十进制来解析。
var num1 = 023;
var num2 = 079;
var num3=08;
console.log(num1);//19 有效的八进制值,输出19
console.log(num2);//无效的八进制值,输出79
console.log(num3);//无效的八进制值,输出8
十六进制字面值前面两位是0x,后跟任何十六进制数字(0-9、A-F),字母可以为小写表示10-15;
var liu1 = 0xaf;
var liu2 = 0x23;
console.log(liu1);//175
console.log(liu2);//35
十六进制与八进制在进行计算的时候,JavaScript会将八进制与十六进制转换为十进制之后,再进行计算。
八进制转十进制方法:首先去掉前面的0,然后按权相加法,即将八进制每位上的数乘以位权,然后将得出来的数再加在一起。如023=2*Math.pow(8,1)+3*Math.pow(8,0)=19;
十六进制转十进制方法:首先去掉0x,然后将字母转换为数字进行权相加法。如0xaf=10*Math.pow(16,1)+15*Math.pow(16,0)=175;
JavaScript能表示的最小值保存在Number.MIN_VALUE中,值为5e-324,最大值保存在Number.MAX_VALUE中,值为1.7969e+308。如果值超出范围,则转换为Infinity。
NaN,表示非数据,NaN与任何值不相等,isNaN()函数用来判断参数是否是非数值。
console.log(isNaN(NaN));//true
console.log(isNaN(10));//false
console.log(isNaN(0));//false
console.log(isNaN("8a"));//true
console.log(isNaN("67"));//false
数值转换,
parseInt(),parseFloat();
paseInt用于字符串转换为数字。可以转换十进制、八进制、十六进制。从第一个字符串解析,直到解析到非数字的字符。如果第一个就是非数字的字面值,则为NaN
console.log(parseInt("023",8));//输出19
console.log(parseInt("83a2"));//输出83
console.log(parseInt("a83a2"));//输出NaN
parseFloat用于将字符串转换为浮点数。parseFloat也是字符串的第一个字符开始解析,直到遇见第一个无效的浮点数字符位置。
console.log(parseFloat("123blue"));//输出123
console.log(parseFloat("123.123a"))//输出123.123
console.log(parseFloat("123.123.23"));//输出123.123
String类型
String 类型用于表示由零或多个16位的Unicode字符组成的字符序列。字符串可以由单引号或者双引号表示,如 var str='hello'; var str2="hello";
字符字面量
String类型包含一些特殊的字符字面量,也叫转义序列。
n:换行;t:制表;b:空格;r:回车;f:换页;\:斜杠;':单引号;":双引号;xnn:以十六进制代码nn表示的一个字符;unnnn:以十六进制代码nnn表示的一个Unicode字符。
字符串的初始化后,值是不可变的,除非给改字符串重新赋值。
要将一个值转换为字符串,可以调用toString()方法。默认是转换为十进制的,也可以转换为2进制、8进制、16进制。
var num=123;
console.log(num.toString());//123
console.log(num.toString(2));//1111011
console.log(num.toString(8));//173
console.log(num.toString(16));//7b
在不知道转换的是不是null或者undefined的情况下,可以使用转型函数String(),将值转换为字符串。null转换为“null”;undefined转换为“undefined”;其他的调用toString()方法进行转换。
console.log(String(123));//123
console.log(String(null));//null
console.log(String(undefined));//undefined
Object类型
JavaScript中的对象就是一组数据与功能的集合,可以通过new 创建新的对象,为新的对象添加属性与方法。var o = new Object();Object类型所具有的属性和方法同样存在于具体的对象中。
每个object对象都有以下属性和方法:
Constructor.保存这创建当前对象的函数,也就是构造函数。
hasOwnProperty(propertyName):检查给定的属性是否存在于当前的对象。
isPrototypeOf(prototype):检查当前对象是否是另一个对象的原型。
propertyIsEnumerable(propertyName):检查给定的属性是否能用for in 进行循环
toLocalString():返回对象的字符串表示。与执行地区的环境有关。
toString():返回对象的字符串表示
valueOf():返回对象的字符串、数值或者布尔值。通常与使用toString()方法相同。
- 胡泳:如果总想着和机器人竞争,你就已经输了
- VUE 入门基础(7)
- JSON 和 JSONP
- android 项目中出现红色感叹号的解决方法
- SharePoint Foundation 2010
- ASP.NET MVC Action Filters
- Android:StatFs类 获取系统/sdcard存储空间信息
- 数据挖掘干货
- 高效 Mac 人士必备:实现工作/家庭间网络环境切换的自动化
- android中AVD的使用
- ASP.NET MVC 2示例Tailspin Travel UI层分析
- CSS 命名之Dialog, Modal, Popup, Popover, Lightbox 等的区别
- Eclipse JAVA文件注释乱码
- 2018年小程序的红利趋势预测,懂的来……或许你将成为下个富翁
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Flutter 标签类控件大全Chip
- 【Flutter实战】六大布局组件
- 【Flutter实战】定位装饰权重组件及柱状图案例
- Flutter为什么使用Dart?
- Flutter中如何使用WillPopScope
- 谈谈我对 Flutter 发展前景 和 “嵌套地狱” 的浅显看法
- 超过百万的StackOverflow Flutter 问题-第二期
- Flutter Flow实现半圆弹出菜单
- 【Flutter实战】自定义滚动条
- vue.config.js的优化配置(element-ui, echarts, lodash按需加载 )
- Flutter “孔雀开屏”动画效果
- Flutter 使用Navigator进行局部跳转页面
- Flutter 动画鼻祖之CustomPaint
- 【Flutter实战】Flutter 中那么多组件,难道要都学一遍?
- 【Flutter组件终结篇】332个组件 658页PDF