1.alert(1&&2),alert(1||0)

alert(1&&2)的结果是2

只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;

只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

这个就是只有前面的为对,才能进行下去,而且必须有个返回值。这里主要是因为只有前面的为true,才会进行后面的运算,返回的就是后面的值。如果前面的是false,后面的也就没有意义,直接返回前面的结果。

alert(0||1)的结果是1

只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。

只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

这样的就是有个对的就行,但是必须有个返回值,前面的为true,就直接返回前面的值,如果前面的为false,就返回后面的值。

2.mouseenter和mouseover的区别 

不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。对应mouseout

只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。对应mouseleave

因此在定义鼠标位置使用mouseover的时候会出现常见的冒泡现象。

阻止冒泡的方法

W3C: 事件对象.stoppropogation(),

IE:  事件对象.cancelBubble=true;

3、正则表达式

用正则表达式匹配字符串,以字母开头,后面是数字、字符串或者下划线,长度为9-20

var reg=new RegExp("^[a-zA-Z][a-zA-Z0-9_]{9,20}$");

正则表达式分析身份证号码

身份证号码 = 6位地址编码 + 8位出生日期 + 4位顺序号

例如:出生日期在1800-2099之间的人的身份证号码的出生日期部分的正则

(18|19|20){0,1}\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01]);
(18|19|20){0,1}\d{2} 确定年份,
(18|19|20){0,1} 确定年份的前两位 (18|19|20)中匹配,{0,1}表示匹配前一项至少0次最多一次
\d{2} 确定年份的后两位 \d表示匹配[0-9]中的任何一个数,匹配两次 (0[1-9]|1[012]) 确定月份,
0[1-9] 匹配01月-09月,首位是0,在1-9中选一位
1[012] 匹配10月-12月,首位是1,在[012]中选一位 0[1-9]|[12]\d|3[01] 确定日期
0[1-9] 确定01日-09日
[12]\d 确定10日-29日
3[01] 确定30号-31号

正则表达式不能含有特殊字符

var reg=new RegExp("^[\u4E00-\u9FA5a-zA-Z0-9_]{1,20}$");

reg.test("要检测的字符串");

test是reg的一个方法符合条件是true,不符合条件返回false

4、数据存储

数据存储的几种方式

cookie在客户端存储数据并发送给服务端,用来存储,获取、删除,要设置过期时间,否则浏览器关闭时过期、但是只能存储字符串类型,以文本的形式,

localStorage:存储在本地不会发送到服务器,无时间限制,除非手动删除,但是只有新的浏览器才支持。

session通过类似哈希表的数据结构来存储,能支持任何类型的数据对象,能够含有多个对象,没有大小控制,安全性较高,保存在服务器,随着保存东西的增多,对于用户较多的网站,服务器的压力会变大。

cookie的存取

存:

       var expireDate = new Date();

         expireDate.setYear(expireDate.getYear()+1900+1);

         $cookies.put('account',data.user,{'expires':expireDate.toUTCString()});

取:

 $scope.user = $cookies.get('account');

LocalStorage的存取

存:

localStorage.setItem(“name”,”星星”);

取:

     var username =  localStorage.getItem(“name”);

session的存取

存:

 sessionStorage.setItem("cardId",keyCardId);

取:

 var cardId = sessionStorage.getItem("cardId");

5、有关作用域和异常捕获

分析下面代码的输出结果

1、

if(true){
var a = 1;
}
cosole.log(a);

这种情况打印出来是1,因为定义变量在没有函数名称包围的时候,javascript相当于一个大的函数,在if中定义的变量相当于全局变量。

2、

function aaa(){
var a = 1;
console.log(a);
}
console.log(a);
aaa();

这种情况打印的是''a未定义'',函数aaa()不再执行,因为上面的报错会影响下面函数的执行。

3、如何让报错不影响呢,我们可以用try catch

function aaa(){
var a = 1;
console.log(a);
}
try{
console.log(a);
}catch(e){
}
aaa();

使用try catch把可能出错的console.log(a)包裹起来,这样在这段出问题的时候就不会影响后面的函数的执行。
4、看trycatch是如何打印出来的

try{
console.log(a);
}catch(e){
console.log(e);
}

这样就可以看到问题具体出在哪里了,而且不会影响后续函数的执行。打印结果如下:

[object Error]{description: "“a”未定义", message: "“a”未定义", name: "ReferenceEr...", number: -2146823279, stack: "ReferenceEr..."}

最新文章

  1. NB-IoT的相关资料整理(基本概念,技术优势,典型案例和当前的进展)
  2. iOS - 在工程中试玩状态模式
  3. Hadoop+Spark:集群环境搭建
  4. Rem实现自适应初体验
  5. Procrustes Analysis普氏分析法
  6. Jordan Lecture Note-1: Introduction
  7. HW6.3
  8. files_dir
  9. web前端开源小案例:立方体旋转
  10. struts2原理架构图
  11. Windows 10技术布局,谈微软王者归来
  12. hdu_5754_Life Winner Bo(博弈)
  13. 【TED】如何掌握你的自由时间
  14. Mysql基本命令二
  15. IDEA jsp模板
  16. Kafka 消费者相关配置
  17. [.NET] 使用 Senparc.Weixin 接入微信公众号开发:简单实现自动回复
  18. 08_java基础知识——方法重载
  19. pycharm 中按照文档引包方式,引包错误
  20. python argparse(参数解析)模块学习(二)

热门文章

  1. 自适应布局下echarts引起页面跳帧
  2. C语言字符数组与字符串
  3. Eclipse Common API
  4. SQL Server数据类型一览表
  5. JS高级程序设计第三版——基本概念
  6. Microsoft Fluent Design System
  7. hadoop使用
  8. input type=number去掉上下箭头
  9. C# 中关于radiobutton控件的使用
  10. 6 - 常用模块(os,sys,time&datetime,random,json&picle,shelve,hashlib)