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..."}

前端javaScript经典面试题的更多相关文章

  1. JavaScript经典面试题(二)

    前言: 近年来T行业就业者越来越多,有关于编程行业的高薪工作也变得越来越难找,竞争力越来越大,想要在众多的应聘者当中脱颖而出,面试题和笔试题一定要多加研究和琢磨,以下记录的是自己的面试过程之中遇到的一 ...

  2. 20道JavaScript经典面试题

    该篇文章整理了一些前端经典面试题,附带详解,涉及到JavaScript多方面知识点,满满都是干货-建议收藏阅读 前言 如果这篇文章有帮助到你,️关注+点赞️鼓励一下作者,文章公众号首发,关注 前端南玖 ...

  3. 前端必会的Javascript经典面试题

    这是前端最基础的问题,也是在面试中难倒无数同学的经典问题 01. Javascript 数据类型 Javascript 数据类型 = 基本类型 + 引用类型 ES6 之前 5 + 1 = 6 种 ES ...

  4. javascript经典面试题之for循环click

    经典重现 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf- ...

  5. JavaScript经典面试题系列

    1.javascript的typeof返回哪些数据类型 Object number function boolean underfind 2.例举3种强制类型转换和2种隐式类型转换? 强制(parse ...

  6. JavaScript经典作用域问题(转载)

    题目 var a = 10; function test(){ a = 100; console.log(a); console.log(this.a); var a; console.log(a); ...

  7. web前端经典面试题大全及答案

    阅读目录 JavaScript部分 JQurey部分 HTML/CSS部分 正则表达式 开发及性能优化部分 本篇收录了一些面试中经常会遇到的经典面试题以及自己面试过程中遇到的一些问题,并且都给出了我在 ...

  8. Web前端经典面试试题(一)

    本篇收录了一些面试中经常会遇到的经典面试题,并且都给出了我在网上收集的答案.眼看新的一年马上就要开始了,相信很多的前端开发者会有一些跳槽的悸动,通过对本篇知识的整理以及经验的总结,希望能帮到更多的前端 ...

  9. Web前端经典面试试题(二)

    上次由于时间有限只分享了一部分的前端面试题,所以本篇继续分享前端经典面试试题 一. 栈和队列的区别? 栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的. 队列先进先出,栈先进后出. 栈 ...

随机推荐

  1. SharePoint 2013 - Workflow Manager

    1. Workflow Manager可以与SharePoint 安装在同一台机器上,只是不建议这么做:由于Workflow Manager 需要使用数据库,我个人将其安装在 SQL Server机器 ...

  2. Linux文件压缩和解压缩命令

    Linux文件压缩和解压缩命令: tar 命令(打包并压缩的话,原文件也会默认存在) -c 建立打包档案 -x 解包 -t 查看包里的类容 -r 向包里追加文件 -v 显示打包过程 -f 文件 比如: ...

  3. Struts2的学习-通配符和session对象

    一. 取得session 3种方法1.context.getSession() -->>Map对象 2.HttpServletRequest request =(HttpServletRe ...

  4. 【Spring实战】—— 10 AOP针对参数的通知

    通过前面的学习,可以了解到 Spring的AOP可以很方便的监控到方法级别的执行 ,针对于某个方法实现通知响应. 那么对于方法的参数如何呢? 比如我们有一个方法,每次传入了一个字符串,我想要知道每次传 ...

  5. nginx封IP脚本

    #!/bin/bash max= confdir=/etc/nginx/conf.d/blockips.conf logdir=/var/log/nginx/access.log echo " ...

  6. March 14 2017 Week 11 Tuesday

    Thinking will not overcome fear but action will. 空想终日惶恐,行动方可无惧. As the deadline comes closer and clo ...

  7. codeforces 609E Minimum spanning tree for each edge

    E. Minimum spanning tree for each edge time limit per test 2 seconds memory limit per test 256 megab ...

  8. POJ-2886 Who Gets the Most Candies?---线段树+约瑟夫环

    题目链接: https://cn.vjudge.net/problem/POJ-2886 题目大意: N个人围成一圈第一个人跳出圈后会告诉你下一个谁跳出来跳出来的人(如果他手上拿的数为正数,从他左边数 ...

  9. Python:函数的命名空间、作用域与闭合函数

    1,参数陷阱 如果默认参数的只是一个可变数据类型,那么每一次调用的时候,如果不传值就共用这个数据类型的资源. 2,三元运算 c=a if a>b else b#如果a>b返回a,否则,返回 ...

  10. 课堂笔记:HTML---------一般标签、常用标签

    HTML:超文本标记语言 HTML标签---成对儿出现的是双标签元素,单个儿出现的是单标签元素 一.通用标签 1.格式控制标签 <font></font> 文字 color-文 ...