学习javascript变量已经好几遍了,今天系统的来整理一下,主要是从定义,声明,数据类型几个方面入手
一、变量声明
js所有的声明变量,均使用var关键字
最开始我也不理解这句话,为什么不能用let。后来仔细理解了一下,这里说的是声明变量,没有定义变量或者赋值,let必须初始化,所以只能使用var
var a; //声明一个变量 a
var b,c,d; //同时申明多个变量时,变量名之间用逗号隔开
console.log(a); //在控制台显示变量a的值,输出为undefined
document.write(a); //在网页上打印变量a的值,输出为undefined
声明变量注意:
1、 同一变量可多次不同赋值,修改变量的数据类型,修改后变量的数据类型视情况而定
/2、声明的变量要符合变量的命名规范
3、变量的具体数据类型,由变量赋值决定。
二、js变量的命名规则
1、变量命名必须以字母、下划线”_”或者”$”为开头。其他字符可以是字母、_、美元符号或数字。
2、变量名中不允许使用空格和其他标点符号,首个字不能为数字。
3、变量名长度不能超过255个字符。
4、变量名区分大小写。(javascript是区分大小写的语言)
5、变量名必须放在同一行中
6、不能使用脚本语言中保留的关键字、保留字、true、false 和 null 作为标识符。
截止到目前为止JS描述了一组具有特定用途的关键字,一般用于控制语句的开始或结束,或者用于执行特定的操作等。关键字也是语言保留的,不能用作标识符。if for switch case break continue while var function
三、变量的定义
知识点:const ,let ,var ,直接赋值
1、const
const定义的js变量是一个常量。不可以修改(相当于只读不可写入),而且必须初始化(给const一个初始值,不能为空),
注:const不能改变值,如果改变值。浏览器也不会报错,只会默默的失败,(出自ECMAscript 6入门)
const的值不能在同一函数内重复声明,否则两个都会报错。
const a = 5; //5被定义之后就不能改变,5这个位置不能为空
const a ;//错误,必须初始化
2、var
var是常用的定义变量,
var 定义变量 如果没有初始化值会输出underfined,不会报错
var定义的变量在函数作用域中,也就是说这个变量可以在方法外部调用,
function test(){
if(true){
var a = "China";
console.log(a); //China
}
console.log(a); // China
}
test();
执行结果
var可以省略,但是不推荐使用这种方法,如果省略了var直接定义变量,变量则提升为全局变量,会抛出ReferenceError错误,这里大家做了解就好了
出自js高级程序设计(第三版)23页
3.let
let是es6中出的标准
let定义的变量是块级作用域,只在let所在行数内有效,函数外无法使用变量。
相当于局部变量,一个函数中不能重复使用let定义相同的变量名,否则会报错
let也不会像var那样发生变量提升
let定义变量需要先声明在使用,否则会出现错误。
在此函数中。在这个函数中没有使用let声明foo就使用了,没有找到foo所以返回referenceError,
4、直接赋值
a = a;
这种方法是不规范的,不推荐使用,大家知道有这个点就好了。
注:直接赋值,不声明变量,定义的变量属于全局变量,在全局范围内可以使用。
四、数据类型
网上关于js数据类型的文章比较多,我这里主要参考js高级程序设计写的
数据类型主要分为原始值和引用值,其中原始值是不能改变的,引用值是可以改变的
原始值有:
数值型:number(凡是数字都是数值型,不区分整数和小数)
字符串:string(凡是引号包裹起来的内容全部都是字符串)
布尔:boolean(true、false)
未定义型:undefined
引用值有:
对象类型:object(特殊取值null)
引用数据类型bject包括 :object,array,function,data
引用值是可以改变的
1、number 数值
1.number包含整数和浮点数,在控制台中,浮点数会自动转化为整数
var num = 2.00
console.log(num) // 输出:2,自动转换为了整数
2.浮点数的最高精度是17位
2.string字符串
1.字符串类型中的单双引号作用一样
2.字符串有length属性,可以取得字符串的长度
3.字符串是不可改变的,所谓的改变字符串是销毁原来的字符串创建了新的字符串,并不是改变原来的字符串。
4.字符串转换,这点在文章末尾写到。
3.boolean布尔值
1。布尔值只有true和false两个值。true不一定等于1 false不一定等于0 看具体情况
2. 区分大小写,小写额true和false是布尔值,大写的False和True只是标识符不是布尔值
Boolean()转型函数,把某个值转化成为Boolean值
4.Undefined
声明变量未定义,变量值等于Undefined
调用函数时没有对应参数提供,参数值等于Undefined
对象没有赋值的属性,该属性值为Undefined
函数没有返回值,默认为Undefined
5.null
null表示为空的引用
null通常用来占位
null不等于任何值,包括null本身
null在用typeof操作符去检查的时候,类型是object,(是指上是一个空指针)
6.object引用数据类型
主要包括object,array ,function,date
这点内容比较多我暂时没整理完,整理好了我继续更新
6.3补充,数据类型还有symbol 唯一值,es6中新增的
五、 数据类型检测和转换
数据类型装换和检测我另外文章写的比较详细了,大家可以去看一下
javascript中数据类型检测javascript中数据类型转换