javascript

javascript带var和不带var声明变量的区别是什么

如果您在全局范围内,那么差别不大。阅读Kangax 的答案以获得解释

如果你在一个函数中,那么var将创建一个局部变量,“不带 var”将查找作用域链,直到找到变量或到达全局作用域(此时它将创建它)

 

 

有区别

var x = 1 在当前范围内声明变量 x(又名执行上下文)。如果声明出现在函数中 - 声明了一个局部变量;如果它在全局范围内 - 声明一个全局变量。

x = 1另一方面,它仅仅是一个属性分配。它首先尝试解决x作用域链。如果它在该范围链中的任何位置找到它,它就会执行分配;如果它没有找到x,那么它只会在全局对象(它是作用域链中的顶级对象)上创建属性。x

现在,请注意它没有声明一个全局变量,它创建了一个全局属性。

两者之间的区别是微妙的,可能会令人困惑,除非您了解变量声明也会创建属性(仅在变量对象上)并且 Javascript

JS严格模式(use strict)详解

由于 JavaScript 语法不够严谨,一直被人们所诟病,例如在使用一个变量时,可以不使用 var 关键字来提前声明(例如:url = 'http://javascript.p2hp.com/';),此时 JavaScript 解释器会自动为您创建这个变量。为了使代码更加严谨,JavaScript 中引入了严格模式,一旦使用了严格模式,将不再允许使用那些不严谨的语法。

什么是严格模式

严格模式是在 ECMAScript5(ES5)中引入的,在严格模式下,JavaScript 对语法的要求会更加严格,一些在正常模式下能够运行的代码,在严格模式下将不能运行。

添加严格模式,主要有以下几个目的:

  • 消除 JavaScript 语法中一些不合理、不严谨的地方;
  • 消除代码中一些不安全的地方,保证代码的安全运行;
  • 提高 JavaScript 程序的运行效率;
  • 为以后新版本的 JavaScript 做好铺垫。

目前,主流浏览器包括 IE10 及其之后的版本都已支持严格模式,JavaScript 正在向着更合理、更安全、更严谨的方向发展。

启用严格模式

要启用严格模式,您只需要在 JavaScript 脚本的开头添加"use strict";'use strict';

js中then()的用法

then()方法是异步执行。

意思是:就是当.then()前的方法执行完后再执行then()内部的程序,这样就避免了,数据没获取到等的问题。

语法:promise.then(onCompleted, onRejected);

参数

promise必需。Promise 对象。

onCompleted必需。承诺成功完成时要运行的履行处理程序函数。

onRejected可选。承诺被拒绝时要运行的错误处理程序函数

举例

 navigator.mediaDevices.getUserMedia(constrains).then(
            function (stream) {
                video.srcObject=stream;
            }
可以理解成navigator.mediaDevices.getUserMedia(constrains) 返回一个参数stream ,然后执行function功能

ajax技术介绍

Ajax

Ajax:(也写为AJAX 读作/ˈeɪdʒæks/或阿贾克斯. “Asynchronous JavaScript and XML”(异步JavaScript和XML)的缩写)是一组Web开发技术,它使用客户端上的各种Web技术来创建异步web应用程序.使用Ajax,Web应用程序可以异步(在后台)从服务器发送和检索数据,而不会干扰现有页面的显示和行为。通过将数据交换层与表示层分离,Ajax 允许网页以及扩展的 Web 应用程序动态更改内容,而无需重新加载整个页面。在实践中,现代实现通常使用JSON而不是XML。

Ajax不是一种技术,而是一个编程概念。HTML 和 CSS 可以组合使用来标记和设置信息样式。JavaScript 可以修改网页以动态显示,并允许用户与新信息进行交互。内置的 XMLHttpRequest 对象用于在网页上执行 Ajax,允许网站将内容加载到屏幕上而无需刷新页面。Ajax不是一种新技术,也不是一种新语言。相反,它是以新方式使用的现有技术。

后来,AJAX 这个词就成为 JavaScript 脚本发起 HTTP 通信的代名词,也就是说,只要用脚本发起通信,就可以叫做 AJAX 通信。W3C 也在2006年发布了它的国际标准.

 

更多参考 Ajax中文网