js笔记——记录在js中踩过的坑

news/2024/7/19 13:29:45 标签: js, web
webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

易错函数拼写

forEach 而不是 foreach
split 而不是splite

字符串操作

str = str.split 而不是 str.split

public String substring(int beginIndex, int endIndex)函数,从beginIndex开始取,到endIndex结束,从0开始数,其中不包括endIndex位置的字符

“smiles”.substring(1, 5) returns “mile” 而不是"miles"。

字符串不能被部分修改,应该是word.replace(……) 而不是 word[0] = ‘i’。

js_forEach__breakreturn_13">js forEach 不能用 break!!!return也不能正常返回!!!

forEach()无法在所有元素都传递给调用的函数之前终止遍历。也就是说,没有像for循环中使用的相应的break语句。如果要提前终止,必须把forEach()方法放在一个try块中,并能抛出一个异常。如果forEach()调用的函数抛出foreach.break异常,循环会提前终止:

可换成some或every,参考:Javascript Array forEach()中无法return和break,代替方法some()与every()

也可换成for + break

慎用函数默认实例arguments

例题:FCC: Seek and Destroy

function destroyer() {
  // 请把你的代码写在这里
  var array = arguments[0];
  
  return array.filter(function(data){
    var contain = true;  
    //错误,这里的arguments已经变成了filter回调函数的arguments。
    for (var i=1; i<arguments.length; i++){
         if (data === arguments[i]){
           return false;
         }
    }
    return true;
  });
}

位置放在body末尾

js推荐放到body结束标签的末尾:参考https://blog.csdn.net/u012211821/article/details/78919695

js_null__49">js中的空 null “”

空字符串是否为非数字?结果为false,不是非数字,也就是,它是数字。
alert(isNaN(""));

*1将其转化为数字,看来,空字符串=0
alert(("")*1);

js运算符:http://javascript.ruanyifeng.com/grammar/operator.html#toc6

js判读是否为null:JS判断null的方法分析_javascript技巧_脚本之家

js_61">js异步编程

js可能不按顺序执行!如果遇到非阻塞事件,则会先跳过去,顺序执行剩余代码。

参考:js执行顺序js异步 - CSDN博客

Js阻塞机制,跟Js引擎的单线程处理方式有关,每个window一个JS线程。所谓单线程,在某个特定的时刻只有特定的代码能够被执行,并阻塞其它的代码。

由于浏览器是事件驱动的(Event driven),因此浏览器中很多行为是异步(Asynchronized)的,很容易有事件被同时或者连续触发。当异步事件发生时,会创建事件并放入执 行队列中,等待当前代码执行完成之后再执行这些代码,如鼠标点击事件发生、定时器触发事件发生、XMLHttpRequest完成回调这些事件,都会被放 入执行队列中等待。

关于Js的阻塞机制,可以看下面一段代码,一般,我们会认为,这段代码会log出来0,1,2

for(var i=0;i<3;i++){
setTimeout(function(){
console.log(i);
}, (i+1)*1000);
}
而实际上,这段代码log出来的结果是 3,3,3。这是js新手很容易遇到的问题,具体原因就是因为for循环的阻塞机制。在上面的代码中,setTimeout这个定时器需要等待for循环 执行完成,而for循环执行完成了之后,i已经为3了,此时才开始执行setTimeout,因此console.log(i)会是3。

比如遇到$http请求事件时,如何保证按顺序执行?

参考:angualrjs,$http异步操作执行完再执行下一步该怎么写

解决方法一:嵌套

步骤1.success{
   步骤2.success{
      步骤3}} 这样的写法    

解决方法二:使用事件

$scope.$on('step1success',function(){
    //步骤二代码
//执行完成后在回调函数中触发
    $scope.$emit('step2success');
});
$scope.$on('step2success',function(){
    //步骤3代码
//执行完成后在回调函数中触发
    $scope.$emit('step3success');
});
$scope.$on('step3success',function(){
    //全部执行完成
});

//步骤一代码
//执行完成后在回调函数中触发
$scope.$emit('step1success');

http://www.niftyadmin.cn/n/906350.html

相关文章

python取元素,python – 获取元素的最小XPath

我正在尝试创建一个返回元素的XPATH的函数.不幸的是,它返回绝对xpath是不够的.我想尽可能地获得最小的xpath(或者更好 – 更“聪明”,不一定是最小的).例如,如果element有id,则返回xpath依赖于其id.我希望多次使用此xpath,并且根据页面更改,绝对xpath非常容易受到攻击.或者,如果…

无法连接到任何指定的MysQL,docker-compose中的“无法连接到本地MySQL服务器”

我有MySQL的Laravel应用程序&#xff0c;我正在尝试使用docker-compose在Docker中运行它。但是&#xff0c;当应用尝试连接数据库时&#xff0c;它会抛出&#xff1a;Connector.php 55行中的PDOException&#xff1a;SQLSTATE [HY000][2002]无法通过套接字’/var/run/mysqld/my…

部署Java网站及Mysql天坑bug解决

安装Tomcat 下载Tomcat压缩包。本文以Tomcat9为例&#xff0c;解压到D:\Tomcat-9.0.8。 进入bin文件夹&#xff08;可以设置为环境变量&#xff09;&#xff0c;运行startup.bat&#xff0c;提示如下&#xff1a; D:\Tomcat-9.0.8\bin> .\startup.bat Neither the JAVA_H…

php中的select 语句,快速掌握MySQL数据库中SELECT语句_php

本文针对mysql数据库中的SELECT语句快速精细掌握。MySQL中SELECT语句的基本语法是&#xff1a;以下是引用片段&#xff1a;SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT][SQL_BIG_RESULT] [HIGH_PRIORITY][DISTINCT|DISTINCTROW|ALL]select_list[INTO {OUTFILE|DUMPFILE} file_na…

Qt QTreeView树形视图用法

1&#xff0c;树形结构的item设置为选中 QModelIndex rootIndex; QModelIndex robotsIndex; QModelIndex nonMobileIndex; rootIndex treeView->model()->index(0, 0);//最顶层item的index robotsIndex treeView->model()->index(10, 0, rootIndex);//选中item父…

php 封装建议,浅谈PHP封装CURL

CURL是一个非常强大的开源库&#xff0c;支持很多协议&#xff0c;包括HTTP、FTP、TELNET等&#xff0c;我们使用它来发送HTTP请求。它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数&#xff0c;并且支持HTTPS。CURL可以根据URL前缀是“HTTP” 还是“HTTPS”自…

Qt QDataBase数据库操作

Qt中的MVC 参考&#xff1a;Qt的MVC设计模式——InterView框架(MVD) - CSDN博客 连接数据库 this->db QSqlDatabase::addDatabase("QMYSQL");bool MainWindow::connectDB(QString ip, int port, QString database, QString username, QString password){this-…

Oracle阴塞,oracle 查询阻塞的sql语句

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼session1&#xff1b;create table t_all_objs as select owner,object_id,object_name from all_objects where 01;alter table T_ALL_OBJS add constraint pk_t_all_objs primary key (OBJECT_ID);insert into t_all_objs(owner,…