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