1.变量
声明提前
按值传递 -->'赵氏孤儿'
var n=100; var m=n; m--; -->n=100
var arr=[1,2,3]; var arr1=arr; arr1.push(4); -->arr=[1,2,3,4]
2.数据类型
原型:值直接保存在变量本地的内容
引用:值保存的是变量的地址
typeof null;-->object typeof undefined;-->undefined
3.数据类型转换
<隐式转换>
1.算术运算:-->默认转为数字
字符串(前提确定内容都是数字)-=0 --> 转为Number类型
2.关系运算:默认转为数字;两个字符串比较,按字符比较其unico值
3.逻辑运算:默认转为Boolean类型
<显示/强势转换>
1.转为String类型
x.toString() --> 不能用于null与undefined
String() --> 是万能的
错误类型: var n=null; console.log(n.toString());
var n=defined;console.log(n.toString());
上述两种会报错
包装类型: var n=100; console.log(n.toString()); --> new Number(n).toString();
null与undefined不可以new
2.转为Number类型
Number(x);
parseInt(str)/parseFloat(str)
3.转为Boolean类型
Boolean(x);
!!x
NaN,0,null,undefined,"", -->这5中转为false
4.运算符
1.算术运算符 --> +,-,*,/,%,
/: 不为0的数 / 0 = Infinity ; console.log(0/0) -- >NaN
%: 判断能否整除 ; 限制某个值不能超过某个数
2.关系运算符
> , < , >= , <= , != --> 自动进行类型转换
=== ,!== --> 对数据类型也进行比较,比较null与undefined
NaN != 任何值 --> true
isNaN(n) --> 返回布尔值
1.var n=" "; console.log(isNaN(n)); --> false
2.console.log(Number(" ")); --> 0 Number(空字符串)=0
console.log(Number(" 1 ")); --> 1
question: 如何判断输入的内容是否为数字
使用unicoed / 正则表达式
3.逻辑运算符
&& || !
利用&& --> 条件&&操作;
利用|| --> value1 || value2;
console.log(4&&5); -->5 console.log(0&&5); -->0 ?
console.log(4||5); -->4 console.log(0||5); -->5
4.位运算
>> 右移 , << 左移 二进制移动
5.扩展赋值表达式
+= , -= , *= , /= , %=
6.三目/三元/条件运算
条件?操作:
条件?操作:
条件?操作:
...?... : 默认值;
4.招数
1.分支结构:
一个条件一件事,满足则做
简单: 条件 && 操作
复杂:if(...){......} 建议即使一句话也不要省略{}
一个条件两件事,满足做事件1,不满足做事件2
简单:三目运算
复杂:if(...){}else{}
多个条件,多件事,多选一
简单:三目运算
复杂:if(...){...}else if(...){...}...
等值比较:switch case
2.循环结构
for(;;){}; while(){} ; do{}while()
死循环:for(;;); while(true)
question:九九乘法表:
//行row<=9,row=1 row++
for(var row=1;row<=9;row++){ for(var i=1,line="";i<=row;line+=str,i++){ var r=i*row; r=r<10?r+"; ":r+";"; var str=i+"x"+row+"="+r+" "; } console.log(line); }5.函数
对象:函数名指向函数对象的变量
将变量作为参数传入函数时,是按值传递
作用域:全局作用域
函数作用域
全局函数:
以前没搞懂JS的全局函数,全局函数和window对象的函数不一样。
全局函数不属于任何一个内置对象。JS包含以下7个全局函数,用于一些常用的功能:escape(),eval(),isNan(),isFinite(),parseFloat(),parseInt(),unescape();
escape(string),对string进行编码,这样就可以在所有计算机上读取该字符串。
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。