运算符(操作符) 在JS中 +.-.*./.%这些都是算数运算符,typeof也是一个运算符,它的操作结果就是得到一个描述变量数据类型的字符串. + 运算符 1.两个值在都没有string类型的值的情况下相加,如果都是number类型,则做数学加法运算,如果存在非number类型的,会把它先转换为number类型再做数学加法. 其实,在没有string类型的情况下,又除开number类型以外,基本数据类型中就剩 boolean.undefined.null这三个数据类型了. number+num…
关系运算符 - 关系运算符用来比较两个值之间的关系的 >.<.<=.>= 先说这四个.如果关系成立则返回true,关系不成立则返回false. - 如果比较的两个值是非number类型值,会将其转换为number类型值然后再比较.特殊情况:如果比较的两个值都是字符串,此时会比较字符串的Unicode编码,而不会转换为number. 其实就按正常逻辑的理解来就行了,就两个数比较,是对的表达式就返回true,不对就返回false,不管谁和NaN比较都是返回false. 如果两边都是st…
-强制类型转换为String 1.方式1 调用被转换数据的toString()方法 number类型值.布尔类型值.都可以调用toString()方法强制转换.但是null值和undefined值不行,这两个类型的值没有toString()方法. 补充一下toString方法的知识,其实还可以当一个简单的进制转换器,因为是初学阶段,所以对于这个方法的学习后续再继续补充. 十进制装换为其他进制. .toString(2)表示转换为2进制 .toString(8)表示转换为8进制 .toString…
JavaScript中有6种数据类型 一.基本数据类型 - String 字符串 JS中的字符串需要使用引号引起来双引号或单引号都行 但是要注意的是某种引号嵌套使用的话,需要加上 \ 转义.比如说我们要输出一句话. var str="面试官问我:"你在学校最有价值的经历是什么?"" 这样使用引号是会报错的. 报错原因:你在学校最有价值的经历是什么?这一句首先没有被引号括起来,被识别为标识符,并且是非法的. var str="面试官问我:\"你在学…
方法 - 听了不少调用什么什么方法,所以方法究竟是啥东西? - 如果一个函数作为一个对象的属性保存,那么我们称这个函数时这个对象的方法,调用这个函数就说调用对象的方法(method). 创建一个对象 var obj = new Object(); 添加属性 obj.name = "maoweizhao"; obj["age"] = ; 对象的属性值可以是任何的数据类型,所以保存函数. obj.sayName = function(){ console.log(obj…
数的形参(形式参数) - 定义函数时,可以在()中定义一个或多个形参,形参之间使用英文逗号隔开:定义形参就相当于在函数内声明了对应的变量但是并不赋值,形参会在调用时才赋值. 函数的实参(实际参数) - 调用函数时,可以在()传递实参,传递的实参会赋值给对应的形参. - 调用函数时JS解析器不会检查实参的类型和个数. 如果实参的数量大于形参,多余实参将不会赋值 如果实参的数量小于形参,则没有对应实参的形参将会赋值undefined,如下a的值为1,形参b没有实参值为undefined:a+b结果为…
函数(Function) - 函数也是一个对象,也具有普通对象的功能 - 函数中可以封装一些代码,在需要的时候可以去调用函数来执行这些代码:当调用函数时,函数中封装的代码会按照顺序执行. - 使用typeof检查一个函数时会返回function - 创建函数有三种方式 1.通过构造函数方式:实际开发中基本不用 var fun = new Function("console.log('Hello 这是我的第一个函数');"); 2.函数声明方式 function 函数名([形参1,形参2…
对象的基本操作 - 创建对象 - 方式一:使用new关键字调用的函数,是构造函数(constructor),构造函数是专门用来创建对象的函数. var obj = new Object(); - 方式二: var obj = {}; - 添加属性 - 属性名:对象的属性名没有任何要求,不需要遵守标识符的规范,但是还是尽量按照标识符规范去写. - 属性值:可以任意的数据类型. - 方式一:在对象中保存的值称为属性.语法:对象.属性名 = 属性值; obj.name = "mao"; ob…
对象 对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性.除了那5种基本数据类型,就是对象. 分类:1.内建对象- 由ES标准中定义的对象,在任何的ES的实现中都可以使用- 比如:Math String Number Boolean Function Object.... 2.宿主对象- 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象- 比如 BOM DOM 3.自定义对象- 由开发人员自己创建的对象…
break关键字 -break关键字可以用来退出switch或循环语句 -不能在if语句中使用break和continue,但不是说if语句里面不能写break关键字,break关键字一定要包含在switch或循环语句中. 正确的: for(var i= ; i< ; i++){ console.log(i); if(i == ){ break; } } 错误的: if(i == ){ break; } -break关键字,默认会立即终止离他最近的那个循环语句 例如下面的这段代码,默认是会退出内…
常量:就是改变不了的,也是可以直接使用的. 变量:可以改变的,不确定的. var =123456; 通过 var 声明一个变量,同时赋值给它 标识符:在JS中所有的可以自主命名的内容,都可以认为是一个标识符, -比如:变量名.函数名.属性名 -规范: 1.标识符中只可以含有字母.数字._.$ 2.标识符不能以数字开头 3.标识符不能是JS中的关键字和保留字 4.标识符一般采用驼峰命名法 其实在JS底层,保存标识符采用Unicode编码,理论上utf-8含有的内容都可以作为标识符 var 中文=1…
匿名函数 - 用函数声明的方式创建一个函数时,不加函数名称. function sum(){ console.log("我是函数sum")} - 不加名称,这样写浏览器是会报错的. function(){ console.log("这是一个匿名函数")} - 正确写法,在外面加(),浏览器不会报错,但是要如何执行? ( function(){ console.log("这是一个匿名函数"); }) - 在后面再加()就运行了,代码运行到那块了,执…
for循环 - 语法: for(①初始化表达式 ; ②条件表达式 ; ④更新表达式){ ③语句... } - 执行流程: 首先执行①初始化表达式,初始化一个变量,(这里只会执行一次) 然后对②条件表达式进行求值判断,如果为false则终止循环 如果判断结果为true,则执行③循环体 循环体执行完毕,执行④更新表达式,对变量进行更新. 更新表达式执行完毕重复②…
循环语句 - while循环 - 语法: while(条件表达式){ 语句... } - 执行流程: while语句在执行时,会先对条件表达式进行求值判断, 如果判断结果为false,则终止循环 如果判断结果为true,则执行循环体 循环体执行完毕,继续对条件表达式进行求值判断,依此类推 - do...while循环 - 语法: do{ 语句... }while(条件表达式) - 执行流程 do...while在执行时,会先执行do后的循环体,然后在对条件表达式进行判断, 如果判断判断结果为fa…
条件判断语句 - 条件判断语句也称为if语句 - 语法一: if(条件表达式){ 语句... } - 执行流程: if语句执行时,会先对条件表达式进行求值判断, 如果值为true,则执行if后的语句 如果值为false,则不执行 - 语法二: if(条件表达式){ 语句... }else{ 语句... } - 执行流程: if...else语句执行时,会对条件表达式进行求值判断, 如果值为true,则执行if后的语句 如果值为false,则执行else后的语句 - 语法三: if(条件表达式){…
逻辑运算符 ! 非 - 非运算可以对一个布尔值进行取反,true变false false边true - 当对非布尔值使用!时,会先将其转换为布尔值然后再取反 - 我们可以利用 !! 来将其他的数据类型转换为布尔值(隐式转换) 首先null赋值给变量a,通过!a运算后,null转换为了boolean值true,然后再一次!a,值变为false.null值变成boolean值就是false,所以通过两次非运算也能将一个其他类型的值转换为boolean类型的值,原理和Boolean()函数是一样的.…
这个系列博客主要用来记录本人学习JavaScript的笔记,从0开始,即使有些知识我也是知道的.但是会经常忘记,干脆就写成博客,没事的时候翻来看一看,留下一点学习的痕迹也好.可能写博客的水平暂时不太好,但是慢慢来吧! 想要走前端开发的路,JavaScript是最核心的内容,必须熟练掌握,尽量不要急于求成,把一些东西理解得比较透彻再去接触像vue之类的一些框架,不然学了也等于白学.好,废话不多说,直接开始JavaScript的学习. 首先JavaScript是解释型语言,和Java语言不一样,不需…
原型(prototype) - 创建一个函数(所有函数)以后,解析器都会默认在函数中添加一个属性prototype prototype属性指向的是一个对象,这个对象我们称为原型对象. 创建一个函数MyClass(). function MyClass(){} - 当该函数作为构造函数使用,它所创建的对象中都会有一个隐含的属性指向该原型对象. 这个隐含的属性可以通过对象.__proto__来访问.如果这个函数是个普通函数,那么prototype属性也没什么作用. 调用构造函数,创建一个对象. va…
JavaScript代码一般编写在哪里呢? 看到这个问题,第一个反应就是,JavaScript那当然是编写在<Script></Script>这对标签中啊!然而! 1.可以编写到标签的指定属性中 <button onclick="alert('写在onclik属性中');">按钮</button> <a href="javascript:alert('写在href属性中');">超链接</a>…
正则表达式的使用 先说RegExp对象的一个方法 test() - 使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false. 1.用正则表达式来检查一个字符串中是否含有字母a var reg = new RegExp("a"); var s="abcdef"; console.log(reg.test(s)); 创建了一个RegExp对象reg,匹配规则是含有字母a,匹配模式没写,然后创建一个字符串s,reg调用方法t…
String对象 在底层,字符串是以数组的形式保存的.比如说一个字符串"String"以["H","t","r","i","n","g"]形式保存.所以Sting对象有个属性length,可以获取字符串(对象)的长度.其实这个对象加不加都可以,因为字符串变量也会经过包装可以使用String对象的属性和方法. charAt()- 根据索引获取指定的字符 charCode…
包装类 - 在JS中为我们提供了三个包装类: String() Boolean() Number() - 通过这三个包装类可以创建基本数据类型的对象 例子: var num = new Number(2); var str = new String("hello"); var bool = new Boolean(true); - 但是在实际应用中千万不要这么干,为什么?因为会出现问题啊! bool是一个对象,转换为boolean值永远都是true. 那这个包装类有什么作用呢? 思考一…
Math - Math属于一个工具类,它不需要我们创建对象(例如Date日期对象需要通过构造函数创建对象 var 变量=new Date(),Math不需要),它里边封装了属性运算相关的常量和方法 我们可以直接使用它来进行数学运算相关的操作 - 方法: Math.PI - 常量,圆周率 Math.abs() - 绝对值运算 Math.ceil() - 向上取整 Math.floor() - 向下取整 Math.round() - 四舍五入取整 Math.random() - 生成一个0-1之间的…
Date - 日期的对象,在JS中通过Date对象来表示一个时间 - 创建一个当前的时间对象 var d = new Date(); - 创建一个指定的时间对象 var d = new Date("8/12/2020 23:40:50"); - 方法: getDate() - 当前日期对象是几日(1-31) getDay() - 返回当前日期对象时周几(0-6) - 0 表示周日.1表示周一... getMonth() - 返回当前日期对象的月份(0-11) - 0 表示一月.1表示二…
arguments (封装实参的对象) 在调用函数时,浏览器每次都会传递进两个隐含的参数:1.函数的上下文对象 this2.封装实参的对象 arguments- arguments是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度- 在调用函数时,我们所传递的实参都会在arguments中保存 - arguments.length可以用来获取实参的长度 - 我们即使不定义形参,也可以通过arguments来使用实参, - arguments对象里边有一个属性叫做callee,这个属性对…
数组去重 var arr = [1,2,3,2,2,1,3,4,2,5]; //去除数组中重复的数字 //获取数组中的每一个元素 for(var i=0 ; i<arr.length ; i++){ //console.log(arr[i]); /*获取当前元素后的所有元素*/ for(var j=i+1 ; j<arr.length ; j++){ //console.log("---->"+arr[j]); //判断两个元素的值是否相等 if(arr[i] ==…
遍历数组 - 遍历数组就是将数组中元素都获取到 - 一般情况我们都是使用for循环来遍历数组: - 使用forEach()方法来遍历数组(不兼容IE8) forEach()方法需要一个回调函数(由我们创建,但是不由我们调用的函数)作为参数,数组中有几个元素,回调函数就会被调用几次,如下图输出了7次. 每次调用时,都会将遍历到的信息以实参的形式传递进来,我们可以定义形参来获取这些信息. 先给回调函数定义三个形参,函数被调用时,浏览器会传递三个实参进来. a:正在遍历的元素 b:正在遍历元素的索引,…
数组的一些方法 - push() - 用来向数组的末尾添加一个或多个元素,并返回数组新的长度 - 语法:数组.push(元素1,元素2,元素N) - pop() - 用来删除数组的最后一个元素,并返回被删除的元素 - unshift() - 向数组的前边添加一个或多个元素,并返回数组的新的长度 - shift() - 删除数组的前边的一个元素,并返回被删除的元素 - slice() - 可以从一个数组中截取指定的元素 - 该方法不会影响原数组,而是将截取到的内容封装为一个新的数组并返回 - 参数…
数组 - 数组也是一个对象,是一个用来存储数据的对象,和Object类似,但是它的存储效率比普通对象要高. - 数组中保存的内容我们称为元素 - 数组使用索引(index)来操作元素 - 索引指由0开始的整数 - 数组的操作: - 创建数组 var arr = new Array(); var arr = []; - 向数组中添加元素 - 语法: 数组对象[索引] = 值; arr[0] = 123; arr[1] = "hello"; - 创建数组时直接添加元素 - 语法: var…
构造函数 - 构造函数是专门用来创建对象的函数 创建一个对象时,通过构造函数的方式来创建.这是通过Object()这个构造函数来创建的一个实例obj. var obj=new Object(); - 一个构造函数我们也可以称为一个类 想要创建一个人的类 function Person(){ } - 构造函数就是一个普通的函数,只是他的调用方式不同, 如果直接调用,它就是一个普通函数. Person(); 如果使用new来调用,则它就是一个构造函数,通过构造函数Person创建了一个per实例.…