博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript知识点记录01
阅读量:5291 次
发布时间:2019-06-14

本文共 2905 字,大约阅读时间需要 9 分钟。

 

 1.typeof null = "object" 底层判断机制上的一个小bug(因为对象的二进制前三位为0,null的所有位都是0)

  referenceError与typeError:

  referenceerror(声明都没) undefined (声明了没有赋值) 与 typeerror(对undefine的函数名做执行()时)

 

 

2.不同数据类型的加加减减

  true+1=2(true先转成了1)   1+“aa”="1aa"(向上转)   null+2=2;(nullz转成了0)   2+NAN=NAN(和不是数字做运算)   100-“1”=99(除了 + 是字符串拼接,其余都是转为number)   100-"1a" NaN no a number   1++"2"=3 相当于把字符串转成了数字   int(‘1a’)是转不动的,要用parseInt('1a')=1

3.作用域(一)

1.var(或者默认)的变量有一个向上查找的过程,找到即可,不约束于代码块。 2.欺骗语法,eval和with一定不要用,一定有不用eval可以解决的方案。 3.eval用过地方的记录: (1).ajax接收服务端数据时,如果服务器端返回的是json,但是我接收的还是string,要把他转化一下。 data = eval("(" + data + ")");  (2)好吧这个地方也不要这样,用 JSON.parse(str)  (3)也就是说,忘记掉eval吧。(用处没必要,而且影响性能,如果代码中大量使用 eval(..) 或 with,那么运行起来一定会变得非常慢。) ​ ​

4.作用域(二)1.js只有函数可以限制作用域,函数里的变量函数外面无法使用的。(前提是var声明的,不var的话相当于window.a,那就是全局的)

let 关键字可以将变量绑定到所在的任意作用域中 默认所有的变量都是window对象的属性,默认地不写了。 使用var关键字声明的变量还在所有代码执行之前被执行,没写var的话就没有声明提前。 引出一个小东西:(函数的声明提前) fun1();//没错,最前面声明定义好了 fun2();//错的,var声明了变量fun2,但是还没有赋值,所以对一个undefined变量当做函数执行时不对的。 function fun1(){ } var fun2=funnction(){ } why:因为fun2是var声明的,所以提前了,但是还没有赋值,因此是undefined,所以undefined不是一个函数,无法执行。 使用function fun1(){}创建的函数,会在所有代码执行之前被创建。 2.函数形式调用,this就是window 对象方法形式调用,this就是obj对象。 3.不要在块内声明函数

5.函数

1.函数也是对象!!! 2.函数的两种表达: (1)function f1(){} (2) var f2=function(){}-----函数表达式------->匿名函数给一个变量。 3.解析器不会检查实参的数量,多余的实参不会被赋值,给就给不用了。 4.实参可以是任意的,函数也可以作为实参。 有这么一操作,将匿名函数作为参数传给某个函数。 5.返回值也可以是任意的,包括可以返回函数。 6.IIFE(立即执行函数) (function(){ console.log('aaa')})(),执行一次就扔掉了,没必要用变量去保存它。 7.for x in obj 遍历对象可以遍历它的属性与方法 值得注意的是,obj.XX,XX不能是变量,所以应该使用obj[n]; 8.this 对象调this就是对象,函数形式调的话就是windows 9.call apply arguments 三者: 一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。 不同点:接收参数的方式不同。call (a1,a2...) apply([1,2,3,4]) example: var color='red'; var obj={ 'color':'blue'}; function test() { console.log(this.color); } test(); //red test.call(obj);//blue arguments[0],arguments[1].......

6.对象

1.除基本数据类型之外的都是对象(包括函数) 2.对象跟函数的定义方式差别不大,只是调用时多一个new 3.对象的原型属性 4.学好js,必须搞清楚: 对象-函数-闭包 三者之间的种种关系。 5.内建对象(看w3c手册,比如数组) 数组对象 自定义对象 6. ​

7.数组

1.数组也是对象,属性就是0,1,2,3,4。。。 2.字面量创建:var a=[1,2,3,4,5]; 3.js的数组不规定数据类型的相同,是一个强大的容器。 常用方法:push(后面添加)pop(往后删除,返回最后一个)         unshift(向前加) shift(向前删除) 属性方法还是多用,不断看手册积累,一般你想要的功能他都有。如果没有自己写一个也是没有问题的,比如: a=new Array(); a.jump=function (step) {
  for(var i=0;i

8.声明与赋值(提升)

1.var 声明的变量会被提前 2.函数也会被提前,但是函数表达式不会。     foo(); // 不是 ReferenceError, 而是 TypeError!     var foo = function bar() {
    // ...   }; 错的   function foo() {
    var a;     console.log( a ); // undefined     a = 2;   }   foo(); 对的。

9.字符串

字符串底层是字符数组的形式存储的。 属性:length, 方法:charAt()//返回指定位置的字符  不如 s[0],s[1]      charCodeAt()//字符的unicode编码      concat()//连接字符串 不如 + 号就行      indexOf()检索字符串,返回index

10.正则表达式(在线正则生成+API文档)

re = / / ​ re.test(); ​ []==或 ​ {}==次数 {1,3}-->1到3次 ^开头 $结尾 例如 手机号码: /^1[3-9][0-9]{9}$/ *** 字符串里用到的正则:serach repalce(/name is csz/i,'name is lc'); ​ ​

 

转载于:https://www.cnblogs.com/CszShuzi/p/9942158.html

你可能感兴趣的文章
关键字
查看>>
Pycharm安装Markdown插件
查看>>
上传图片并预览
查看>>
哈夫曼编码_静态库
查看>>
【转】redo与undo
查看>>
C#更新程序设计
查看>>
常用Request对象获取请求信息
查看>>
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Shell命令-内置命令及其它之watch、date
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
第8章-方法
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Microsoft SQL Server Transact-SQL
查看>>
Font: a C++ class
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
Java四种引用包括强引用,软引用,弱引用,虚引用
查看>>
【NodeJS】http-server.cmd
查看>>
iOS bundle identifier 不一致,target general的Bundle Identifier后面总是有三条灰色的横线...
查看>>