这是我参与8月更文挑战的第30天,活动详情查看:8月更文挑战
js的位置不同可能导致不同的后果。
前言
今天整理了一下之前学习js的笔记,在这里分享个大家。
window.onload=function(){} 意思是当页面加载完成 才去执行function中的代码。
js语句是发送给浏览器的命令。
注意:
-
js中严格区分大小写。
-
语句结束记得写分号。
-
变量的类型是弱类型,既不限制变量中的值的类型。
js代码中出现的错误可以在网页中的console中查看。
特殊的Number: 无穷(Infinity);不是一个数(NaN Not a number(一般发生在类型转化失败的情况下))
isfinity():用来判断数是不是无穷的,如果返回的是true,那么这个数是有限的,如果返回false,那么这个数是无穷的。
类型转换: toString();
parseInt();从左到右依次验证字符串中的每个字符,如果是一个有效数字,则继续查看下一个,直到验证到不是一个合法字符的时候结束,返回的是非法字符之前的数字。如果第一个字符都不是一个合法数字,那么返回的是NaN。
parseFloat();原理同上。(第一个小数点为合法字符!)
强制转换类型: String();什么东西都可强制转换为字符串。
Number();首先看整个字符串是不是符合数字的规则,如果不符合,直接返回NaN。如果符合,返回的是数字。
Boolean();需要记住转换后是false的。
(面试)js的六种假值:
-
0
-
""
-
false
-
NaN
-
null
-
undefined
prompt(); 从键盘输入一个内容。
document.write(); 把东西打印在页面上,括号里边可以包含标签。
作用域问题 :面试的时候会考。
json: 在网络中,传输的json通常是字符串格式。
json的序列化:把json对象->json字符串。(JSON.stringify(json));从后台拿到的数据要从json字符串转化为json对象。(JSON.parse(json))。
bootcdn :可以下载各个版本的jQuery和其他(vue)。
跨域问题:
https://www.baidu.com:8080 1. 协议 http https 2. 域名不同 2.1 顶级域名 baidu.com 发起请求的页面是 aaa.com 接受的页面是 bbb.com 2.2 二级域名的不同 www.baidu.com fanyi.baidu.com 3. 端口不同解决跨域问题可以通过后台,也可以通过前端解决。(后台解决只需要一行代码)
前端解决跨域:
JSONP 是一种json的使用模式 JSONP和ajax关系 前台要解决跨域 不使用ajax 使用ajax会产生跨域 因为ajax使用的是 XHR(XMLHttpRequest)请求,其他请求不存在跨域安全问题ajax和jsonp的区别:
ajax 和 jsonp 的区别 1. ajax有跨域问题 jsonp没有跨域问题 2. 原理 ajax原理: 利用了xhr对象 jsonp 利用了src没有跨域的特性,通过函数的方式解决的 3. 请求回来的数据 1. ajax请求回来的数据 一般情况下,ajax请求回来的都是json格式的 2. jsonp请求回来的数据 是一个函数的调用 4. 请求方式的不同 1. ajax的请求方式 GET POST PUT DELETE... 2. jsonp的请求方式 只能用GET闭包:
- 函数里面嵌套的子函数
- 子函数调用父函数的局部变量
- 通过return将子函数暴露在全局变量,该子函数既是闭包
闭包的好处:
-
避免全局变量被污染
-
局部变量驻留在内存中,可以在外部被调用
//闭包案例 var a=5; function fun1(){ var a=4; return function(){ a++; console.log(a); } } var fun2= fun1(); fun2();innerHTML: innerHTML原生属性,等价于jquery中的$().html().
**注意:**如果一个对象存在,当访问它不存在的属性和方法时,不会报错,而是返回undefined。
each循环:
//例子来自电梯导航 //将多个类名为floor的标签赋值给floorList var floorList = $(".floor"); var heightArr = []; //通过each()将floorList中的每个对象加入多数组中 floorList.each(function(i){ heightArr.push(floorList.eq(i).offset().top) })多个相同(如p)标签存在的时候,可以在css中使用这中格式。
P:nth-child(i){ 各种属性 }navigator.userAgent: 用户代理头的字符串表示(判断浏览器类型的时候会用)
seo优化:当页面被搜索到的时候,排行更靠前。