变量和值
var a = 10; // 变量声明并赋值var x = 1, y = 2;var bar = 1;bar = 2;console.log(bar);
:::info
- Number
- String
- Boolean
- Undefined
- Null
- Symbol
-
堆栈内存
var a = 3;var b = a;a = 1;console.log(a,b)
var arr1 = [1,2,3,4]var arr2 = arr1;console.log(arr1,arr2)arr1.push(5)console.log(arr1,arr2)arr1 = [1,2]console.log(arr1,arr2)
运算和运算符
++运算与—运算
- 运算符的优先级
- 字符串比较时:从左到右依次比较ASCII码的大小
- 比较时,可能会进行数据类型的转换
- 逻辑运算符:与、或、非的使用
var a = 1 && 2;console.log(a) // 2// 第一个为真就返回第二个的值// 第一个为假就返回第一个的值
var b = 0 || null || 1 || 0console.log(b)// 遇到假就往后走,遇到真或者走到最后就返回当前的值
循环
break用于终止循环,continue用于跳过某次循环 ```javascript for(var i = 0; i < 10; i++) { console.log(i) }
var j = 0 while(j < 10) { console.log(j) }
// for(声明;判断;操作){}
// do while操作
<a name="iRr28"></a>### typeof```javascript// typeof 可以用来检测基本数据类型,返回的结果都是字符串typeof [] // objecttypeof null // objecttypeof undefined // undefinedtypeof function() {} // functionconsole.log(a) // ReferenceErrorconsole.log(typeof(a)) // undefinedconsole.log(typeof(typeof(a))) // string
类型转换
Number
Number()parseInt(string,radix)parseFloat()+'123'console.log(Number(null)) // 0console.log(Number(undefined)) // NaNvar a = '10'console.log(parseInt(a,16)) // 16parseInt('abc123') // NaNparseInt('123abc') // 123parseFloat('3.1415926') // 3.1415926var num = '3.1415926'console.log(num.toFixed(2)) // 四舍五入保留两位小数
String
隐式类型转换
var a = '123'a++;console.log(a) // 124// 在关系运算符中,null,undefined都会被Number()转为数字类型// 相等运算符中,null和undefined都不会转换为数字类型,而是经过特殊处理转化为falseconsole.log(undefined == 0) // falseconsole.log(null == 0) // falseconsole.log(null == undefined) // true
isNaN
isNaN()会进行数据类型的转换,在处理的时候会判断传入的变量能否转换为数字,如果能转换为数字则会返回false,如果无法转换则会返回true
isNaN(undefind) // trueisNaN({}) // trueisNaN('王小波') // trueisNaN(null) // false
函数
函数声明
// 函数声明function test() {var a = b = 1;console.log(a,b)}test()console.log(a,b)// 函数表达式var test1 = function test2 () {}test1()// 匿名函数表达式var foo = function() {}
arguments
function foo(a,b) {console.log(a,b)}foo(1,2)function bar(a,b,c) {console.log(bar.length) // 获取形参长度console.log(arguments)console.log(a,b,c) // 1,2,undefined}bar(1,2,3)
参数默认值
function test(a = 1, b =2) {console.log(a,b)}test()function foo(a,b) {a = a || 1;b = b || 2;}foo()function bar(a,b) {a = typeof a === undefined ? 1 : a;}
