JavaScript变量基础-基本类型,引用类型,逻辑运算,传值传址
浏览器内核
IE: trident
Chrome: blink
FireFox: Gecko
Opera: Presto
Safari: webkit
外部引入JS
script标签
JS的基本变量类型
原始类型: 它的赋值仅仅是改变它的值而非地址,例如 a=1; b=a; a=2; 后,b的值不会变成2而依然是1
- 数字类型 Number,包括浮点数和整数
- 字符串 var st = "String";
- Boolean,true: 1, false: 0
- undefined: 已经声明但是没有赋值的变量
- null: 空值,一般用于占位,本质是一个Object
引用类型:引用类型的赋值是地址引用,即var A = B; B.add(1); 后,A的值会随B变化
- Array数组 var arr = [1,2,"s",true];
- Object = {}
- function
- Symbol(ES6加入,表示独一无二的值)
var 声明变量会导致变量提升,即出现先引用后声明的现象
ES6 提供let和const关键字来声明变量避免变量提升
var的缺点
var声明的变量可以被重复声明,会导致变量提升,污染全局变量。尽量使用let或者const去替代var。
let, const声明的变量在所在作用域仅能声明一次,且不会影响到外面的作用域,但是作用域内的作用块可以读取,使用它们声明的变量。
逻辑运算
let a = 10, b = 5; /* 加减乘除和其它语言一样 */ let c = a%b; let x = 0; let y = b + x++; for(let i=0; i<10; ++i){ document.write(i); } for(let i=0; i<10; i++){ document.write(i); } /*逻辑运算*/ let t = 1, y =2; console(t==t, t<y, t>y, t==t&&t>y,t==t||t>y); let i=1, j="1"; /* == 相等,不同类型会转换为同一类型比较,称为隐式转换 === 为全等,数据类型不同则直接返回false */ console(i==j,i===j); let span = document.querySelector("#msg"); document.querySelector('[name="age"]') .addEventListener("keyup", function(){ span.innerHTML = this.value >= 90 ? "年纪太大" : ""; }) /*短路运算符: 1||0或者0||1在检查到1的时候直接返回true*/ console.log(1==true, 0==false, 1 || 0, 0 || 1); let sex = prompt("输入性别") || "未知"; /*Switch语法*/ let s = 10 switch(s) { case 1: console.log('a'); break; case false: console.log('b'); break; default: console.log('10'); break; }
传值与传址
//传值,直接复制a的值并且赋值给b let a = 1; let b = a; console.log(a,b); a += 1; console.log(a,b); b += 10; console.log(a,b); //传址:一般引用对象比较大,传值很占内存,因此会直接引用地址 //e,f因此公用同一个对象和地址 let e = {id: 100}; let f = e; f.name = 101; console.log(e); e.name = 103; console.log(f);
隐式转换
/*隐式转换*/ console.log(typeof(winssss)); // 字符串"undefined", 只有typeof+未声名变量不报错 console.log(typeof(null)); // 字符串"Object" console.log(10+"10"*2==30); // true console.log(!!" " + !!"" + !!false || "hehe"); // true
这主要是笔记

浙公网安备 33010602011771号