小陈学js js关键字笔记

Js关键字的使用

var或let      声明变量

(var会变量提升,支持重复声明,没有块级作用域, 兼容IE7;

let不会变量提升,不支持重复声明,有块级作用域,兼容IE11;)

Const         声明常量;声明的常量必须进行初始化

alert(test)   弹出警示框

 

数据类型:

数字(Number)
字符串 (String)
布尔值 (Boolean)
空 (Null)
未定义 (Undefined )

 

Typeof    操作符检测数据类型

"undefined"——值未定义;
"boolean"——布尔值;
"string"——字符串;
"number"——数字;
"object"——对象或者null;
"function"——函数

调用typeof null会返回"object",因为特殊值null被认为是一个空的对象引用。

 

Undefined类型只有一个值,即undefined

声明了一个变量但没有给它赋值,这个变量的默认值就是 undefined

 

Null类型只有一个值即null。

当我们想让变量具有有效值,却又不是任何具体值时,就把null赋给变量。

 

boolean类型只有两个值: true和false,注意必须小写
这两个值与数字值不是一回事,因此 true不一定等于 1,而 false也不一定等于 0

 

NaN表示非数值,not a number 不是个数字

 

isNaN()函数能够检测其参数是否为一个“数字”,是数字返回false(不喜欢数字),非数字返回为true

 

Number()方法:可以用于任何数据,如果包含非法字符,则返回NaN

 

parseFloat()函数解析字符串并返回一个浮点数。

parseInt()方法把数据转为数字类型

 

 

String()   任何的数据类型都能转(全局函数,属于window对象的方法,相当于window.String() )

 

toString()   不能转null和undefined类型,其他类型都能转(属于字符串的方法,必须str.toString() )

 

算术运算符

+    用来做加法运算

-    用来做减法运算,数字和字符串相减,会把字符串自动变成数字进行运算

*    用来数学乘法运算,数字和字符串相乘,会把字符串自动变成数字进行运算

/    用来数学除法运算,数字和字符串相除,会把字符串自动变成数字进行运算,如果除数为0,结果为Infinity 无穷大;Infinity 为数字类型

%    模运算符 %,就是求余数,不够除为它自己,0%3=0 ,1%3=1 ,2%3=2,3%3=0

++   递增运算符(++) 为其操作数增加1,返回一个数值。

--    递减运算符(--) 为其操作数减1,返回一个数值。

 

赋值运算符

=、+=、-=、*=、/=、%=

 

比较运算符

<、>、<=、>=、(等于:==、不等于!=)、(全等于===、全不等于!==)

 

逻辑运算符

&&  且运算,一假且必假:两个有一个假的,值就是假的那个;两个都真,值为后;

||   或运算,一真或必真:两个有一个是真的,值就是真的那个;两个都真,值为前;

!   非/取反,把右边的数据类型转成布尔值

所有逻辑运算符的优先级都低于比较运算符

 

三目运算符

条件 ? 语句1 : 语句2

和if判断的第2种写法作用是一样的。优先级高于赋值,低于其他运算符

 

If语句:if语句括号里面的表达式,会自动调用Boolean()转型函数将这个表达式转换成一个布尔值

 

Switch语句:switch 语句评估一个表达式,将表达式的值与case子句匹配,并执行与该情况相关联的语句。和多分支if...else if...else语句 作用是一样的

Expression:一个用来与 case 子语句匹配的表达式。

 

case valueN 可选 :用于匹配 expression 的 case 子句。如果 expression 与给定的 valueN 相匹配,则执行该 case 子句中的语句直到该 switch 语句结束或遇到一个 break 。

 

 

default 可选:一个 default 子句;如果给定,这条子句会在 expression 的值与任一 case 语句均不匹配时执行。
default在switch语句中的最末尾可以不加break,但是在中间或头部要加break

 

 

循环

For循环:重复执行某些代码,每次执行的时候,有个数字在变化

 

For...in循环:

已知数组:var arr=['15','11','999']

x指代数组里面的下标0 , 1,  2...

for( x in arr ){

alert('第'+x+'个东西是:'+arr[x]);

}

 

While循环:while 循环会一直循环代码块,只要指定的条件为 true(先判断再执行)

 

Do...while循环:在检查条件是否为真之前,会先执行一次do里面的代码,然后只要条件为真就会重复循环。(先执行再判断)

 

双重循环:一个循环体内又包含另一个完整的循环结构

双重循环注意:

各循环可互相嵌套
一般不超过三层
外层循环变量变化一次,内层循环变量要变化一遍

 

Break:跳出当前循环结构或switch分支结构

 

Continue: 跳过本次循环,执行下一次循环。(就是不要再走continue后面的语句了)
注意:只能在循环结构内使用(while,do/while,for,for/in)

 

arr.length:数组的长度

 

 

数组的方法

unshift() 和shift():数组开头添加和删除

 

push() 和 pop():数组末尾添加和删除

 

slice(start,end) :截取数组中的元素;不操作数组本身,(字符串也有这个方法,用法一样,但是数组没有substring方法)

 

splice(索引,删除的数量,添加的元素):操作数组本身,兼具删除,添加和替换功能

indexOf():返回某个指定的元素在数组中首次出现的位置

 

lastIndexOf():返回某个指定的元素在数组中最后出现的位置

 

Concat():用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

 

Join():把数组元素按指定分隔符组合成一个字符串;如果没有分隔符,默认是逗号。不操作数组本身

 

Reverse():将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组

 

includes(): 方法用来判断一个数组是否包含一个指定的值,如果包含则返回 true,否则返回false。

 

Sort():按照字符的unicode编码排序,默认升序,先排第一个字符,以此类推

 

 

迭代方法

Foreach():循环数组或集合中的对象、数据

 

Map():返回一个由原数组每个元素执行回调函数的结果组成的新数组。

 

Filter():返回让回调函数为true的元素组成的数组

 

Every():有一个元素让条件为false,则返回false 。且剩余的元素不会再进行检测。

 

Some():有一个元素让条件为true,则返回true 。 且剩余的元素不会再进行检测。

Reduce():循环数组中的每一项进行累计操作

 

Find():返回满足条件的第一个元素的值。否则返回 undefined。

 

findIndex():返回数组中满足条件的第一个元素的索引。否则返回 -1。

 

 

日期对象

new Date():创建一个日期对象

 

new Date(milliseconds) :一个 Unix 时间戳(Unix Time Stamp),它是一个整数值,表示自1970年1月1日00:00:00 UTC(the Unix epoch)以来的毫秒数,忽略了闰秒。请注意大多数 Unix 时间戳功能仅精确到最接近的秒。

 

new Date(dateString) :时间戳字符串

 

 

字符串对象

Length:获取字符串的长度

 

Str.charAt(下标):返回指定下标所在的字符,第一个字符的下标为0。

 

Str.charCodeAt(下标):根据下标获取字符的 Unicode 编码,下标从0开始

 

Slice()和substring():截取一个字符串的一部分,并返回一新的字符串

Search(‘string’):找到了返回其下标,找不到返回-1 (类似indexOf()方法)

 

Match(‘string’):只能匹配一个。返回数组或null

 

Replace(‘string1’,’string2’):把string1替换成string2

 

Split(‘string’,[limit]):使用指定的分隔符字符串将一个字符串分割成字符串数组;limit一个整数,限定返回的分割片段数量,可以使用正则表达式:str.split(regExp)

 

toUpperCase():转换为大写str.toUpperCase()

 

toLowerCase():转换为小写str.toLowerCase()

 

Trim():删除字符串两端的空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR等)。

 

includes(): 用于判断一个字符串是否包含另一个字符串,如果当前字符串包含被搜寻的字符串,就返回 true;否则返回 false。区分大小写

 

indexOf(‘string’,下标):返回某个指定的字符串值在字符串中首次出现的位置

lastIndexOf('string',Number):返回某个指定的字符串值在字符串中最后出现的位置

startWith(‘string’):字符串string是否在原字符串的开头,返回布尔值

 

endsWith(‘string’):字符串string是否在原字符串的结尾,返回布尔值

 

Concat():str.concat(str1,str2,...)  ,将多个字符串连接成一个字符串,用+更简单一些,推荐

 

Repeat(n):将原字符串重复n次后返回一个新字符串

 

 

 

Math对象

Math.ceil(x)   参数x是一个数字,向上取整,返回 大于或等于 给定数字的最小整数

 

Math.floor(x)  参数x是一个数字;向下取整,返回 小于或等于 给定数字的最大整数

 

Math.round(x)  参数x是一个数字;返回一个数字四舍五入后最接近的整数

 

Math.random() 函数返回一个大于等于0,小于1之间的随机数

 

Math.max(value1[,value2, ...])  参数value1, value2, ... 是一组数值。返回给定的一组数字中的最大值,

 

Math.min(value1[,value2, ...])  参数value1, value2, ... 是一组数值;返回给定的一组数字中的最小值,

Math.PI     圆周率,一个圆的周长和直径之比,约等于 3.14159

 

Math.SQRT1_2:1/2的平方根, 约等于 0.707

Math.SQRT2:2的平方根,约等于 1.414

 

Math.abs(x);  返回x的绝对值,参数x是一个数字


函数

函数声明的语法:

function 函数名(参数1,参数2,...) {
函数体(代码块)
return 返回值;
}

 

函数表达式

var fn = function (参数1,参数2,...) {
函数体
return 返回值;
};

推荐这种方式,因为函数声明方式会提前

 

箭头表达式:箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或 new.target。这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数。

var Foo = () => {};

 

arguments.length:返回实参的数量

arguments.callee:返回当前函数块(就是函数本身)(匿名函数可以使用该属性实现递归调用)

this对象:在函数内部除了有arguments这个对象,还有个this对象,在绝大多数情况下,函数的调用方式决定了this的值。this不能在执行期间被赋值,并且在每次函数被调用时this的值也可能会不同。对于箭头函数,函数体内this对象就是定义时所在的对象,而不是调用时所在对象

 

return语句:终止函数的执行,并返回一个指定的值给函数调用者。

 

 

 

创建对象-原型模式

Prototype(原型):我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,这个对象的用途是包含所有实例共享的属性和方法。使用原型的好处是可以让所有对象实例共享它所包含的属性和方法。

 

constructor(构造函数):无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。在默认情况下,所有的原型对象都会自动获得一个constructor(构造函数)属性,这个属性是一个指向prototype属性所在函数的指针。

 

__proto__:Firefox、Safari和Chrome在每个对象上都支持一个属性__proto__;每个实例对象包含一个__proto__属性,该属性仅仅指向了Person.prototype;

 

Instanceof:前面提到过,在默认情况下,所有的原型对象最初都只包含constructor(构造函数)属性,而该属性也是共享的,因此可以通过对象实例访问。

console.log(person1.constructor === Person.prototype.constructor); // true

提到检测对象类型,还是instanceof操作符要更可靠一些。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值