js基础

来源:互联网 发布:爱奇艺自制网络剧破案 编辑:程序博客网 时间:2024/06/02 04:59

http://javascript.ruanyifeng.com/


https://github.com/airbnb/javascript#es6-computed-properties


1、语句

JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。

2、变量

注意:整数和浮点数都是64位浮点类型var a; // 声明a = undefineda = 1; // 拿旧的变量赋值var a = 1; // 声明并赋值 a = 1var a = 1; // 声明并赋值var a = 2;// 只有赋值,没有声明 var a = 任意对象


3、区块

{  var a = 1;}a = 5; // 区块内的变量可以在块外面使用,块没有单独的作用域范围

4、if 、switc 、 for 、if..else、?: 、do..while 跟 C++语法一样
while(n -- > 0) n会以+1或者-1

5、break、continue和c++一样

6、标签跟C的go to是一样的

7、typeof 返回对象类型

8、自动转换成false的有undefined、null、false、0、NaN、‘’或者“”(空字符串)

9、强制转换函数有parseInt、parseFloat

10、字符串字符编码转换

var a = "a"var b = "b"var c = a + b; // c="ab" // +号可以字符串连接var key = c[1] //c[1] = b//可以索引从0开始

11、对象

var a = {} 、var a = new Object()、var a = Object.create(Object.prototype)// 3个是一样的

复合对象传值都是传引用的
var a = {} // 声明并初始化对象var b = a // 引用a的对象a.key = 1;b.key// b.key = 1b = {}// b进行其他的引用,b != ab.key = 10a.key // a.key=1// 取消引用后进行操作不会对旧的对象造成影响

eval('{foo : 123}') // 123
eval('({foo : 123})' // {foo :123} // eval 是执行把字符串当成语句执行

for ..... in 遍历对象所有可以遍历的属性,包括继承


with 操作对象多个属性,在运行的时候才判断,运行效果慢
with (o){  a = 1;  b = 10;}等于o.a = 1; o.b = 10

12、数组


var a = []// 初始化数组var b = [1, '1', "111"]
lenght 可以控制数组的长度,
var arr = ['a', 'b', 'c']arr.length // 3arr.length = 2 arr //['a', 'b']arr.length = 0 // 则清空数组


13、in运算符

判断某个键名是否在列表中
var arr = ['a', 'b']'a' in arr // true'ac' in arr // false// 数字 和字符串数字是一样的var arr = ['1', '2']1 in arr // true'1' in arr // true




14、function

function print (){}  等于  var print = function() {}print.name // function后面跟着的名字print.length // 返回预期传入参数个数函数参数不是必须的,实参个数比预计参数个数少的会被默认为undefinedarguments[0]是第一个参数 arguments[1]是第二个参数,这个对象只能在函数内部使用。arguments.length 获取实际传入的参数数量

15、作用域

函数外声明的变量是全局变量、函数内声明的变量是局部变量



16、=== 和==

===会先比较类型,在比较值
== 会先把2个值转换成同个类型,然后在比较


17、自动转换

123 + 'abc' // '123abc' '5' - '3' // 2 字符串数字算数运算 自动转换成数字if ('abv'){} // 对非布尔值类型求布尔值// 3. 对非数值类型的数据使用一元运算符(即“+”和“-”)+ {foo: 'bar'} // NaN- [1, 2, 3] // NaN

18、继承

子类调用父类的构造函数: 父类名.call(this)            A.call(this)
call函数主要是指定调用函数所在的作用域,这个主要是方法内的this体现出来

  var counter = {  count: 0,  inc: function () {    this.count++;  } 1、counter.inc() // this = windows   2、 var test = new counter()  test.inc()// this = test  3、  var func = counter.inc  func() // this = windows   4、  var test = new counter()   var func = test.inc()  func() // this = windows 这个就相当于windows.func = test.inc() 然后在windows.func()   5、  var test = new counter()   var func = test.inc()  func.call(test)  func() // this = test 这个是func方法指定一个test作用域,相对于 test.func()   6、apply 跟call是一样的,只是参数apply是[]类型,而call需要一个一个的传入   var test = new counter()   var func = test.inc()  func.apply(test)  func() // this = test 这个是func方法指定一个test作用域,相对于 test.func()   7、   var test = new counter()   var func = test.inc.bind(test)  func() // this = test 这个已经把作用域绑定到方法内了  参照: http://javascript.ruanyifeng.com/oop/this.html#toc6};




19、定时器

setTimeout     参数1.回调的方法,参数2多少毫秒后回调,参数3....n都作为回调方法的参数传入

setInterval

定时器回调函数的this都是windows

参考网站:  http://javascript.ruanyifeng.com/advanced/timer.html 

原创粉丝点击