当前位置 博文首页 > JavaScript入门-学习笔记(二)
a = 100;
var b =200;
console.log(a,b)
var a;
输出结果为:100,200
ps:这样的语法在es5里是能够执行的,虽然它不符合我们的逻辑思维。在js里叫做,变量提升。
var a = 3
var a = a-1;
console.log(a)
//输出结果为2
像这样的语法在Java,c等中,绝对报错,但是在es5中,叫做重复定义。这个逻辑也不符合正常,就好比出生,都是出生一次,没有说有出生两次三次的说法,因此这上面的几个不太符合逻辑的特点,我们知道就行,尽量避开就行。
口诀: 3 2 2
//1. 直接用{}创建对象
var obj = {name:'rainbow',age=20,run : function(){
console.log('i love runnning');
}};
//2. 用new关键字实例化一个对象
var obj2 = new Object();
obj2.name = 'rainbow';
obj2.age = 20;
obj.say = function(){
console.log('hello world')
}
//1. 直接用[]创建
var arr = [];//空数组
//2. new
var arr2= new Array();
ps:注意的是,js可以不用给数组一个初始长度,并且这个长度可读可写,但是不建议写,因为可能导致数据丢失
typeof就是用来检测一个变量的数据类型
使用方法:typeof 变量名(或者常量名)
自增自减:a++,++a,a--,--a;
ps:++a 和 a++的区别:
如果单单是一条语句而言,两者并没有什么区别,就仅仅是一条语句而已,执行后,自己都加了1,但是在有赋值和其他复杂的运算时,就有区别了;
e.g.
var a = 8;
++a;
var b = a++;
var c = --b;
console.log(a,b,c);
//输出结果为a,b,c为10,8,8
b = ++a; 先自增,后赋值
b = a++; 先赋值,后自增
or and not
逻辑运算 || && !
位运算 | &
三目运算符 A<B?表达式1:表达式2; //true放回表达式1,否则为表达式2
//表示真假的运算
真 假
布尔值 true false
数字 非0 0
字符串 非空 null
口诀:
短路与 有0出0,全1为1
短路或 有1出1,全0为0
ps:注意,短路与和短路或在运算时,结果并不是返回true或者false布尔值,而是返回左边或右边具体的值。比如
//短路与
console.log(1 && 1);//1
console.log(19 && 20);//20
console.log(0 && 20);//0
//短路或
console.log( true || 1)//true
console.log( '' || 1 )//1
console.log( ' ' || 1 )//' ' 空格不是空
1. number -> string
console.log(1+2+'3')//输出:33 字符串类型
console.log('1'+4+6+9) //1469
console.log(10+8+'1'+4+6) //18146
2. string -> number
console.log(1+2+'3'-4);//输出29,number类型
console.log(true + 1);//3 number
console.log(true - 1);//0 number
ps:如果字符串出现在最左边,那么后面的数字都会拼接。
如果字符串出现在最右边,那么前面的数字都会相加,再拼接。
首先我们需要理解一个知识,什么是包装类?
它其实就是把几种基本的数据类型(除了undefined和null),封装成一个类,并给这个类添加属性和方法。
我们打印一下这个未实例化的Number,输出的是?
console.log(Number);
//结果:? Number() { [native code] },是一个function
//实例化后
console.log(new Number(2));
//结果:Number {2}
__proto__: Number[[PrimitiveValue]]: 2
var a = 1;
var b = '2';
转换:
b = Number(b);//这个时候就相当于调用了Number方法,返回一个number类型数据
//a + b 等于 3,number类型
ps:如果b是含有数字之外的字符,那么无法正常转换,结果为NaN。
去掉小数点后面的数,转为整数。
如果是字符串,也可以转,但是得看情况:
1.parseInt('12px'); // 结果为12
2.parseInt('px12'); // 结果为NaN
没啥用,和parseInt区别不大。虽然方法名以为是转为浮点数,但是实际效果不会带有小数点。
一般用于字符串的拼接,obj.toString(1+2+'3d')//33d