1. 变量:声明(var) 赋值(=) 
 取值(使用变量名等效于使用变量中的值)
***声明提前:程序开始执行前,
 将所有var声明的变量提前到开始位置
 赋值留在原地
 console.log(a); //undefined
 var a=100;
 console.log(a); //100***使用变量报错:尝试从*未声明*的变量中*取值*
***给未声明的变量赋值,*不会报错*!会自动创建同名变量2. 数据类型:2大类
 原始类型:值保存在变量本地的数据类型
 5种:Number String Boolean undefined null
 Number:8bytes 舍入误差-->四舍五入
 String:每个英文字符 1byte
 每个汉字字符 2bytes
 一旦创建内容不可改变
 Boolean: true false

 引用类型:值不保存在变量本地的数据类型js中的变量 vs 数据库
 内存中 硬盘上的文件
 临时的 持久的
 客户端 服务器端只存一份正课:
1. ***数据类型转换
2. ***运算符和表达式1. ***数据类型转换:
 ***js是弱类型编程语言:3方面:
 1. 声明变量时,不用规定变量存储的数据类型
 2. 赋值时,动态决定变量的数据类型
 同一个变量,先后可保存不同类型的数据
 3. 运算时,js会根据需要,动态转换数据的类型 2大类:
 1. 隐式转换:无需程序员干预,js自动完成的类型转换
 仅讨论+运算中的隐式转换:2句
 算数计算中,一切类型都隐式转为number类型,再计算
 比如:"2"-->2 true/false-->1/0
 特例:+运算中,只要有一方是字符串,两数据都转为字符串,且+运算变为字符串拼接! 表达式:由数据,变量和运算符组成的一个公式
 每个表达式默认都从左向右,两两计算
 *每个表达式有且仅有一个运算结果!* NaN:Not a Number-->说明运算中包含了无法转为数字的值
 不是数字 的 数字
 NaN和任何数据做计算,永远返回NaN
 typeof(x): 专门用于判断x的数据类型,返回数据类型名
 typeof(NaN): number 隐式转换,仅影响表达式的运算结果,不影响变量中存储的实际值。
 2. 强制转换:程序员通过主动调用专门函数,执行转换
 1. 任意类型 to String: 2种:
 var str=x.toString();
 js中,一切数据都有toString方法
 var str=String(x);-->隐式转换
 何时使用:程序在需要时,自动调用
 ***2. 任意类型 to Number: 2种:
 任意类型 to Number: var n=Number(x);-->隐式 String to Number: 2种:
 var n=parseInt(str);
 原理:从str开始位置逐个读取每个字符
 直到碰到第一个不是数字的字符时,停止读取
 自动忽略开头碰到的空格
 比如:var width="12px";
 width+"2px"-->"12px2px"
 Number(width)+Number("2px")-->NaN
 parseInt(width)+parseInt("2px")
 parseInt("12px")+parseInt("2px")
 12 2 -->14
 width=14+"px";
 var money="$400"; NaN
 "34.56"; 34

 var n=parseFloat(str);
 原理和parseInt完全一致!
 但是,parseFloat,只认第一个小数点
 比如:parseFloat("34.56"); 34.56
 parseFloat("34.56.78"); 34.56 Number(x) vs parseInt(str)
 比如:Number("12px")-->NaN
 parseInt("12px")-->12
 string to Number-->parseInt

 Number(true)-->1
 parseInt(String(true))
 parseInt("true")-->NaN
 x to Number-->Number() 3. 任意类型-->Boolean: 1种:
 var bool=Boolean(x);-->隐式转换
 "" NaN undefined null 0 --> false
 其余-->true 课堂练习:
 输入框:var input=[window.]prompt("输入提示");
 [window.]alert();
 ***凡是从页面上获得一切数据,都是字符串类型2. ***运算符和表达式:
 程序:让计算机按照人的想法去执行任务
 运算符:程序中模拟人的思维运算或判断的符号 运算符:算数运算符:+ - * / % ++ --
 %运算:取余数 6789%100-->89
 被除数/除数,不取商,而是取除不尽的余数部分
 何时使用:2大用途:
 1. 判断奇偶数:n%2-->1 奇数 否则 偶数 
 2. 限制一个运算的结果,不超过某个最大值(除数)