JavaScript-变量-原始类型primitive type

一.变量-声明

// JS变量: 弱类型, 动态类型
var a = 3
a = "lioil"
a = true
var b=2, c=3
	
// 加var声明,作用范围在代码块{}中
// 不加var声明,作用范围为全局 
 function hello(){
	 var h = "hello";
	 w =  "world";
 }
 hello();
 alert(h);
 alert(w);

二.变量-原始类型primitive type(5种)

number 数字(不分整型或浮点型)
string 字符串  
boolean 布尔 
null 对象类型的占位符, 人为赋值null(系统不会自动赋值null)
undefined 未定义, null衍生类型(变量没有初始化,系统自动赋值undefined)

// 多行的字符串直接量, 则需要在每行结束时加入反斜杠(\)
var str = "hello,\
             world,\
             nihao";
var a = 3;
var b = 3.14;
var c = "hello";
var d = 'world';
var e = true;
var f = null;
var g = undefined;
var h ;
var o = new Object();	
// 运算符typeof: 原始类型的类型判断
alert(typeof a);
alert(typeof b);
alert(typeof c);
alert(typeof d);
alert(typeof e);
alert(typeof f); //typeof null结果是object, 这是个历史遗留BUG, null是object的占位符,期望object
alert(typeof g);
alert(typeof h);
alert(typeof o);

console.log("hello") // 浏览器控制台输出(F12调试开发者工具)
console.dir("world") // 浏览器控制台显示数据类型结构

1.number数字

和其他语言不一样,JavaScript不区分整数和浮点数,JavaScript中的所有数字都是用浮点数来表示
JavaScript支持常见的算术表达式: 加(+) 减(-) 乘(*) 除(/) 求余(%)
JavaScript还支持更加复杂的运算,被封装在Math对象的方法中:
Math.pow(m,n)     m的n次幂
Math.round(0.6)   四舍五入,结果为1
Math.ceil(0.6)    向上取整,结果为1
Math.floor(0.6)   向下取整,结果为0
Math.abs(-6)      取绝对值,结果为6
Math.max(x,y,z)   取最大值
Math.min(x,y,z)   取最小值
Math.random()     生成一个0到1之间的伪随机数

2.string字符串

var s = 'hello,world';	
s.charAt(0)          获取索引为0的字符, 此处返回'h'
s.charCodeAt(0)      获取索引为0的字符编码
s.substring(1,4)     从索引位置截取子串, 此处返回'ell'
s.slice(1,4)         同上, 返回'ell'
s.slice(-3)          取最后三个字符, 此处返回'old'
s.indexOf('l')       第一次出现字符l的位置, 此处返回2
s.lastIndexOf('l')   最后一次出现字符l的位置, 此处为9
s.split(',')         用字符','来将字符串分隔为数组, 此处返回数组['hello','world']
s.replace('h','H')   将'h'替换为'H', 此处返回'Hello,world'
s.toUpperCase()      返回大写的形式, 此处返回'HELLO,WORLD'

1.数学运算
(1).一元运算符+ -, string,boolean转为number类型
	var a = "1";
	console.log(typeof a);  // string	
	console.log(typeof +a); // number
	console.log(+true);     // 1
	console.log(+false);    // 0
	
(2).加法运算, number会转为string
	console.log(+"50" + 1);  // 结果51, +"50"会自动转为50
	console.log("50" + 1);   // 结果501
	console.log("50" + "1"); // 结果501
	console.log("50" + "a"); // 结果50a		
	
(3).其余数学运算, string会转为number
	console.log("50" - 1;)   // 结果49
	console.log("50" - "1";) // 结果49
	console.log("50" * "2";) // 结果100
	console.log("50" * "a";) // 结果NaN
			
2.关系运算
(1).字符串和数字比较,字符串转成数字
	console.log("123" > 3) // true "123"转成123		
	console.log("a" > 1)   // false "a"转成NaN
	console.log("a" < 1)   // false "a"转成NaN
	console.log("a" == 1)  // false "a"转成NaN
	
(2).字符串和字符串比较,每个字符都转成ascii码,然后一一比较
	console.log("123" > "3")  // false
	console.log("abc" > "ab") // true
			
(3).汉字比较,每个字符转成Unicode码(0-65535之间整数)
	console.log("中".charCodeAt(0)); // 20013
	console.log("国".charCodeAt(0)); // 22269
	console.log("中" < "国"); // true

3.boolean布尔

布尔类型表示真或假,只有两个值,true和false
JavaScript任意类型都可以转换为boolean布尔值,转换规则如下:
	number => 除了+0,-0,NaN,其它都是true
	string => 除了空字符串"",其它都是true	
	Object => 都是true
	
	+0,-0,NaN,"",null,undefined => false,剩下的全都是true
	
例如:
	if(0 || -0 || NaN || "" || null || undefined)
		console.log('至有一个是true');
	else
		console.log('全都是false');

1.等于==, 只比较内容
console.log(0 == true);  // false
console.log(1 == true);  // true
console.log(NaN == NaN); // false 凡是NaN参与判断运算符,除了! !=,其余全是false
console.log(0 == null);  // false null转成NaN
console.log(null == undefined); // true	 undefined转成null

2.全等于===, 除了比较内容,还要比较类型
console.log(1 === true); // false 内容相同,类型不同
console.log(1 === "1");  // false 内容相同,类型不同
console.log(null === undefined); // false 内容相同,类型不同

简书: http://www.jianshu.com/p/9319e39dae0f
CSDN博客: http://blog.csdn.net/qq_32115439/article/details/78118650
GitHub博客: http://lioil.win/2017/09/27/js-var.html
Coding博客: http://c.lioil.win/2017/09/27/js-var.html