JavaScript学习之变量和数据类型
变量
变量相当于容器,值相当于容器内的数据,而变量名就是操作容器内数据的句柄。
-
变量声明
声明变量使用var语句。
可以声明一个或多个变量,也可以为变量赋值。未赋值的变量,初始化为undefined值。
可以重复声明同一个变量,也可以反复初始化变量的值。
var a; var b,c,d,e; var b = 12; console.log(a); //undefined console.log(b); //12
-
变量赋值
使用等号(=)运算符可以给变量进行赋值。
JS引擎的解析方式:先解析代码,获取所有被声明的变量,然后再一行一行的运行。这样所有声明的变量,都会被提升到代码的头部。这称为变量提升。(ES6 let和const声明的变量不存在变量提升)
-
变量作用域
全局作用域:
变量在整个页面脚本中都是可见的,可以被自由访问。
局部作用域:
变量仅能在声明的函数内部可见,函数外是不允许访问的。
全局变量在全局作用域范围内都是可见的,因此具有污染性,应该避免使用全局变量。减少使用全局变量的方法有两种:
1、在脚本中创建一个全局变量,作为当前应用的唯一接口,然后通过对象直接量的形式包含所有应用程序的变量。把应用程序的所有变量都追加在该唯一名字空间下,降低与其他应用程序冲突的概率。
var MyApp = {}; MyApp.name = { "id": "应用程序的id" }; MyApp.work = { num: 123, sub: { name: "sub_id" }, doing: function() { //执行代码 } };
2、使用函数体封装应用程序。
(function() { var MyApp = {}; MyApp.name = { "id": "应用程序的id" }; MyApp.work = { num: 123, sub: { name: "sub_id" }, doing: function() { //执行代码 } }; })
数据类型
-
基本数据类型
JS定义了6种基本数据类型

-
类型检测
1、使用 typeof 运算符可以检测上述6种基本数据类型。以字符串的形式返回,把null归为object类型;把function(){}归为Function类型。
2、使用 constructor 检测。返回当前对象的构造器(类型函数)。如Number.String,Boolean,Object,Array,Function,className。null和undefined没有constructor 属性,不能直接读取。
类型转换
JS能够根据运算环境自动转换值的类型。
-
转换为字符串
常用方法:
1、使用加号运算符,当值与空字符串相加时,就会把值转换为字符串。
2、使用toString()方法。
-
转换为数字模式字符串
默认情况下,无论数值采用什么模式表示,使用toString()方法返回的都是十进制的数字字符串。
toString()方法也会根据参数把数字转换为对应进制的值之后再输出为字符串。
var a = 10; console.log(a.toString()); //10 console.log(a.toString(2)); //1010 console.log(a.toString(8)); //12 console.log(a.toString(16)); //a
-
转换为小数格式字符串
使用toString()方法把数值转换为字符串时,无法保留小数位,提供3种方法:
1、toFixed():能把数值转换为字符串,并显示小数点后的指定位数。省略的部分可进行四舍五入。
2、toExponential():把数字转换为科学计数法形式的字符串。
3、toPrecision():与toExponential类型,但可以指定有效数字的位数,而不是小数位数。
var b = 10.11256 console.log(b.toFixed(3)); //10.113 console.log(b.toExponential(2)); //1.01e+1 console.log(b.toPrecision(3)); //10.1
-
转换为数字
把值转换为数字的方法有以下三种:
1、parseInt():可以把值转换为整数。
2、parseFloat():可以把值转换为浮点数。参数必须是十进制形式的字符串
3、使用乘号运算符。
console.log(parseInt("123abc")); //123
console.log(parseInt("2.12")); //2
console.log(parseInt(".212")); //NaN
console.log(parseInt(010)); //8
console.log(parseInt("0x10")); //16
//把十六进制字符串"123abc"转换为十进制整数
console.log(parseInt("123abc",16)); //1194684
//把8进制字符串"10"转换为十进制整数
console.log(parseInt("10",8)); //8
//把2进制字符串"10"转换为十进制整数
console.log(parseInt("101",2)); //5
-
转换为布尔值
把值转换为布尔值的常用方法有两种:
1、使用双重逻辑非。
2、使用Boolean函数。
-
转换为对象
使用new命令调用String、Number、Boolean类型函数,可以把字符串、数字、和布尔值三类简单值包装为对应类型的对象。
-
强制类型转换
支持使用以下的函数强制类型转换
1、Boolean(value)
2、Number(value)
3、String(value)
记录学习笔记,有其他参考,如有侵权,联系删除
本文来自博客园,作者:rissa,转载请注明原文链接:https://www.cnblogs.com/rissa/p/15106932.html

浙公网安备 33010602011771号