2.1变量
JavaScript 是一种弱类型的脚本语言
var c = 3;即变量的声明(变量使用之前必须加var声明,编程规范)
变量的命名规则!
1.变量命名必须以字母或是下标符号”_”或者”$”为开头。
2.变量名长度不能超过255个字符。
3.变量名中不允许使用空格。
4.不用使用脚本语言中保留的关键字及保留符号作为变量名。
5.变量名区分大小写。(javascript是区分大小写的语言)
全局变量
1.在方法外部声明的变量
2.方法内部,没有加var关键字声明的变量
局部变量
方法内部,使用var声明的变量
var a = 3; //number类型,全局变量 window.a
//变量一共有两种: 全局变量和局部变量
function test(){
var b = 2; //局部变量
c = 5; //全局变量 不使用var关键字声明的变量作用域为全局作用域 window.c
console.info(a);
}
test();
console.info(c); //c为全局作用域
//console.info(b); //此语句会报错 ReferenceError: b is not defined
//console.info(test.b); //此语句不会报错 undefined 函数中使用var声明的变量在外部无法使用
2.2 数据类型
ECMAScript中,数据类型也分为基本类型和引用类型两大类.
基本数据类型:Number、Boolean、String、Undefined、Null
Number:整数和小数(最高精度17位小数)、NaN、Infinity, -Infinity
注意:1.除10进制外,还可通过8进制和16进制的字面值来表示,如 070 表示56、0xA表示10.
2.小数为浮点类型,if(a+b == 0.3) //不要做这样的测试,因为浮点数值最高精度是17位,0.3实际值是0.300000000000000004
Undefined:表示变量声明但未赋值.
Null:表示一个空的对象引用(也就是赋值为null)
引用类型:Object类型 (比如对象、数组、RegExp、Date...)
Typeof 操作符
基本类型和引用类型的值
基本类型是按照值访问的,因为可以操作保存在变量中的实际值
引用类型则是按引用去访问的
//javascript是弱类型变量的脚本语言,根据赋值决定变量的类型
//ECMAScript中变量类型分为两大类
// 基本类型
// Number Boolean String Undefined Null
// 基本类型可以使用typeof关键字判断类型
// 引用类型
// Object Array Date等
//Number类型 整数和小数
var a1 = 10;
var a2 = 10.5;
var a3 = NaN; //not a number
var a4 = 1/0; //正无穷 Infinity
var a5 = 070; //八进制
var a6 = 0xA; //十六进制
var a7 = 0/0; //NaN
console.info(a1);
console.info(a2);
console.info(a3);
console.info(a4);
console.info(a5);
console.info(a6);
console.info(a7);
console.info("a1 typeof " + typeof a1);
console.info("a2 typeof " + typeof a2);
console.info("a3 typeof " + typeof a3);
console.info("a4 typeof " + typeof a4);
console.info("a5 typeof " + typeof a5);
console.info("a6 typeof " + typeof a6);
console.info("a7 typeof " + typeof a7);
//js的小数运算会出现精度问题,一般不使用小数比较
var a1 = 0.1;
var a2 = 0.2;
console.info(a1 + a2); //0.30000000000000004
if(a1 + a2 == 0.3){
console.info("相等");
} else {
console.info("不相等");
}
var a1 = parseInt("aaaaa");
console.info(a1); //NaN
var a2 = parseInt("123xyz");
console.info(a2);
//Undefined数据类型 只有一个值undefined,表示声明变量了,但没有赋值
var x;
console.info(x); //undefined
console.info(typeof x); // undefined
//Null数据类型 空值 表示一个空对象的引用
var x = null;
console.info(x); //null
console.info(typeof x); // object
//String类型
var s1 = "我是字符串1";
var s2 = "我是字符串2";
console.info(s1);
console.info(typeof s1); //string
console.info(s2);
console.info(typeof s2); //string
//Boolean类型
var flag1 = false;
var flag2 = true;
console.info(flag1);
console.info(typeof flag1); //boolean
console.info(flag2);
console.info(typeof flag2); //boolean
//引用数据类型
//引用数据类型要使用instanceof关键字判断具体的类型
var arr = [1, 2, 3]; //数组类型 Array
var d = new Date(); //日期类型 Date
var o = {}; //对象类型 Object
console.info(arr); // [1, 2, 3]
alert(arr); //1,2,3
console.info(typeof arr); //object
console.info(arr instanceof Object); //true
console.info(arr instanceof Array); //true
console.info(d);
console.info(typeof d); //object
console.info(d instanceof Object); //true
console.info(d instanceof Date); //true
console.info(o);
console.info(typeof o); //object
console.info(o instanceof Object); //true
//typeof 操作符 用来判断基本数据类型
var a = 10;
var b = 10.3;
var c = true;
var d = "abcd";
var e = new Date();
var f = NaN;
var g = [1, 2, 3];
var h = undefined;
var i = null;
console.info(typeof a); //number
console.info(typeof b); //number
console.info(typeof c); //boolean
console.info(typeof d); //string
console.info(typeof e); //object
console.info(typeof f); //number
console.info(typeof g); //object
console.info(typeof h); //undefined
console.info(typeof i); //object
注意一下代码:
//对未初始化的变量执行 typeof 操作符会返回 undefined 值;
//而对未声明的变量执行 typeof 操作符同样也会返回 undefined 值。
var message; // 这个变量声明之后默认取得了 undefined 值
// 下面这个变量并没有声明
// var age
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"
alert(message); //undefined
alert(age); //发生错误 ReferenceError: age is not defined