第一天:
一.变量命名规则
1.变量名不能数字起头,必须用英文字母或者下划线起头;
2.变量必须使用驼峰式命名法,如:getNumberSum;
3._num,下划线起头定义临时变量或者函数中参数;
4.不能使用关键字,保留字;
5.在script中直接定义的变量实际上是window的属性。某些变量不能重复;
var x=5===window.x=5
status=window.status 而window.status是字符类型,因此最好不要设置这个变量;
window下的属性名称最好不要定义为变量,这样会重复覆盖。
二.常亮定义
1.定义一次后不能再改变值;
2.常亮名称必须使用全部大写字母,中间用下划线分割;
3.使用const定义。
三.数据类型
string、Boolean、null、undefined、number、object、symbol(es6)
""、null、false、undefined、0、NAN 这六种转为布尔值为false。
第二天
一.数据转换
1.NaN 非数值,强制了数据类型是数值型,但是值并不是数值,这时候就是NaN;
2.使用Number强转,如果内容有字符,就直接判定为NaN;
3.使用parseInt方法,如果前面是数字,后面是字符,抛弃后面字符,将前面的数字转换为数值;如果第一位是字符,直接变成NaN;
4.parseInt遇到小数点时,忽略小数点后的内容;
5.布尔值转换为数值是NaN;
6.toString() 按进制转换为字符;
7.toFixed() 保留几位小数,自动四舍五入;
二.算数运算符
1.字符串相加,首尾相连;
2.隐式转换
数值、布尔、undefined、null、加字符串,先把数值、布尔、undefined、null转换为字符,然后再字符相加;
数值和布尔值相加,现将布尔值转换为数值,true是1,false是0;
数值加null,null被转换为数值后是0,数值+0;
数值加undefined,因undefined转换后是NaN,因此为NaN;
字符、布尔、undefined、null与数值的减法,乘法,除法,取模
%取模运算,就是取余;
先把字符等转换为数值,然后求值。
三.一元运算符
var y=x++;//先把x赋值给y,然后x+1;
var y=++x;//先把x+1,然后把运行的结果赋值给y。
四.关系运算符
false、“”、0 在布尔判断时相等
undefined、null
NaN
== 比较
=== 精确比较
五.位运算符
1.二进制转换
// 8421 8421 8421
// 111 1000
// 1011010=90
// 6*16+15=111
// 120/16=7-8
// 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10,11,12,.....,1f,20,.....ff,100
// 10ff=1*16(3)+f*16(1)+f;
// 15 15
// 8421 8421 8421
// 101 1101 1111
// 5 d f
// 16(2)16(1)16(0)
2.运算符
&位与,1&1=1,其他都是0;
|位或,0|0=0,其他都是1;
^位非,相同为0,不同为1;
~位异或,加1取负;
1<<8,二进制向左移八位,后面补零 1<<n 2的n次幂
256>>7,二进制转换后向右删除后面的数量,100000000>>7-->10
3.找到判断条件
if(~str.indexOf(""g)){
//在str字符串中找到g
}
第三天
一.switch(表达式),表达式是一个变量或者一个运算式,这个运算的结果或这个变量的值等于下面case中那一个,就会执行那个内容,只能判断等于关系;
switch(表达式){
case " " :
break;
...
defalt:
break;
}
二、while循环
1.跳出循环有两种形式
1)循环条件不满足;
2)循环语句块中有条件判断,并且使用break跳出循环。
2.创建死循环
目的是为了让值不断变化,直到满足一个条件,并且使用break跳出循环,这样才可以完成
while(true){
if(){
break;
}
}
3.循环不能超出千万级以上,否则会造成卡顿状态,甚至卡死。
第四天
一.循环求素数
1.当判断问题时条件比所有其他条件要少,寻找反向条件;
2.标记,当某些条件满足时做标记;
3.break,跳出
1)不需要再执行,强制终止循环;
2)找到了需要找的东西,不需要浪费CPU计算。
var bcs=2;
while (bcs<100){
var cs=2;
var s=false;
while (cs<bcs){
// bcs%cs===0//不是质数
if(bcs%cs===0){
s=true;
break;
}
cs++;
}
if(!s){
console.log(bcs);
}
bcs++;
}
二.for循环
// var sum=0;
// for(变量初始化;变量相关条件;变量的变化)
/* for(var i=0;i<=100;i++){
sum+=i;
}*/
// 变量初始化仅运行了一次
// 变量变化实际上也是在做循环的过程,但是如果有多个内容时,我们可以使用,分隔
for(var i=0,sum=0;i<100;i++,sum+=i){
// 语句块中一样
}
console.log(sum);
/* var j=0;
while (j++<100){
sum+=i++
}*/
/*
* 偶数
*
* */
/*for(var i=0;i<100;i+=2){
}*/
/*
* 死循环
*
* */
/* for(var s=0;;s++){
if(s>50){
break;
}
}*/
/* var sums=0;
for(;;){
sums++;
if(sums>100){
break;
}
}*/
三.对象
1.delete 删除对象的属性,不能删除window的属性;
2.遍历,for(var 属性变量名 in 对象) 在js中,对象的属性添加的先后顺序就是for in 循环的先后顺序。
四.函数
1.变量名必须首字母小写,不能数字,驼峰式命名法;
2.不能使用关键字,保留字,不能重复,不能喝变量名冲突;
3.如果是构造函数,首字母必须大写;
4.函数就是可以重复执行的语句块,函数也是对象,放在堆中;
5.使用function定义函数,执行函数的位置可以任意位置,若定义一个匿名函数,并且赋值给变量,这样的函数,执行方法必须在定义之后;
6.
/*
* 这种写法,浏览器会自动将字符串变为代码,然后再执行,因此效率极其低下
*
* 不推荐大家使用
* */
// var cde=new Function("console.log('a');console.log('b');console.log('c');");
// cde();
/*
* 自执行匿名函数
* 只能执行一次
* */
(function () {
console.log("a");
console.log("b");
console.log("c");
})();
五.参数
1.参数的适用范围仅在函数内;
2.参数名尽量表达清晰,如果这个参数名称与其他变量发生重复,这是我们可以使用在前面加_,作为临时变量使用。
第五天
一.变量的作用域
1.全局变量,在函数外定义,在函数外和函数内都可使用,在函数内操作全局变量,这个变量的值会改变并且保留;
2.局部变量,在函数体内定义的所有变量,使用范围仅限于函数内,函数外是不可能获得的,所以每个函数中的空间是独立的,在这个独立空间内我们可以调用自身的局部变量也可以调用函数外的全局变量,当函数执行完成后,内部局部变量就会被销毁,下一次调用该函数,原来的那个局部变量已经不存在 了;
3.如果全局变量名称和局部变量名称相同时
* 1、局部变量定义以后,调用这个变量,变量实际上是局部变量
* 函数中局部变量优先于全局变量在函数中使用
* 2、局部变量定义之前,调用这个变量,因为函数实际在代码执行
* 之前已经被放入堆中,因此,函数内的内容认为该变量已经定义
* 一次不会报错,但是还没有赋值,所以这是打印这个函数内变量
* 仍然是局部变量,值是undefined;
* 3、如果函数中并没有定义与全局变量相同名称变量,在函数中调用
* 变量,使用的是全局变量
4. 当函数名和变量名相同时
* 1、如果变量仅定义没有赋值的情况下,打印这个名称,实际上是函数
* 所以这个时候的函数是可以使用的(可以执行)
* 2、如果变量赋值了,这个时候函数就会被覆盖掉了,将不能被调用
* 这时候打印这个名称,实际上是打印了变量,如果使用变量名()
* 将会报错,这个变量不是一个函数
5.参数也是局部变量,参数的值是由外面带入;
6.函数中的参数是局部变量,
* 1、如果参数带入的是除了对象类型以外的内容时,函数运行完成后,
* 这个参数会销毁,数值不保留
* 2、如果参数带入的是对象类型,实际上是将对象的引用地址带入了
* 所以,参数中的对象和外部的全局对象实际上是指向同一个
* 堆中的对象,因此函数中参数修改了这个对象下的属性,全局
* 对象也会对应被修改。
二.return
1、return只能返回一个值,如果需要返回多个值,我们可以用对象返回
2、不在函数中,不能使用return
3、break跳出循环;continue跳出当前条件,并且继续循环;return直接跳出函数
三.事件return
1、e仅且只有一个,e事件对象
2、事件函数中是不能传参的,不能定义参数
3、事件函数中不能返回值,可以return跳出
4、函数的length是函数的参数个数