扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
一、两者的区别
成都创新互联专注于咸丰网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供咸丰营销型网站建设,咸丰网站制作、咸丰网页设计、咸丰网站官网定制、微信平台小程序开发服务,打造咸丰网络公司原创品牌,更为您提供咸丰网站排名全网营销落地服务。
相等:先强制转换变量类型,再比较
全等:不转换类型,一旦类型不同,就是不全等。
二、相等和不相等的比较规则
1.操作符中有布尔值时:比较前先将之转换为数值
false = 0 , true =1
2.字符串,另一个是数值:字符串去将就数值
3.对象:object.valueOf()方法,用得到的基本类型值按照前面的规则进行比较
4.操作符
4.1 none == undefined:相等
4.2 NaN ==其他(不管是别人还是自己):false(不等号操作,反之)
4.3 对象 == 对象 :指向同一个对象时才true
出于严谨考虑,推荐‘===’操作符
=,赋值运算符,即给变量赋予某个取值或内存地址。比如var a = 3,即给变量a赋值为3,再比如var obj = {},就是把对象{}的地址赋值给obj。
==,比较运算符,检测两个值是否相等。比如var a = 1,则a == 1的结果就是true。需要注意的是,==运算符两边数据类型不一致时可能会发生数据类型转换,比如,同样前面的a,表达式a == '01',第一眼看上去并不相等,但因为在比较a与'01'时,js将字符串'01'转换为数字1,所以a == '01'的结果还是true。
===,比较运算符,基本上===与==的功能一样。区别在于,===不会发生类型转换,数字就是数字,类型就是类型,如果===两边的操作符类型就不一致,那么这个表达式的结果一定是false。
先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:
1、如果类型不同,就[不相等]
2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4、如果两个值都是true,或者都是false,那么[相等]。
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6、如果两个值都是null,或者都是undefined,那么[相等]。
再说 ==,根据以下规则:
1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
a、如果一个是null、一个是undefined,那么[相等]。
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂)
e、任何其他组合,都[不相等]。
举例:
"1" == true
类型不等,true会先转换成数值 1,现在变成 "1" == 1,再把"1"转换成 1,比较 1 == 1, 相等。
= 赋值运算符
== 等于
=== 严格等于
例:
var a = 3;
var b = "3";
a==b 返回 true
a===b 返回 false
因为a,b的类型不一样
===用来进行严格的比较判断
按照我的理解就是说他比==更加严格,因为javascript是弱类型的所以很多对象就算是类型不一样而值一样的时候,用==的话就会是相等的,但是如果用===他们就是不相等的。
不知道能不能看明白。 主要是因为javascript是弱类型语言,但是实际上还是有类型的。
基本简介
ECMA's 50th AnniversaryJavaScript 是根据 "ECMAScript"标准制定的网页脚本语言。这个标准由 ECMA 组织发展和维护。ECMA-262 是正式的 JavaScript 标准。这个标准基于 JavaScript (Netscape) 和 JScript (Microsoft)。Netscape (Navigator 2.0) 的 Brendan Eich 发明了这门语言,从 1996 年开始,已经出现在所有的 Netscape 和 Microsoft 浏览器中。ECMA-262 的开发始于 1996 年,在 1997 年 7 月,ECMA 会员大会采纳了它的首个版本。
在 1998 年,该标准成为了国际 ISO 标准 (ISO/IEC 16262)。这个标准仍然处于发展之中。
在 2005年12月,ECMA发布ECMA-357标准(ISO/IEC 22537)出台,主要增加对扩展标记语言XML的有效支持。
目前javascript 的最新版本为1.8。
历史沿革
大概在1998年,一家称作Nombas的公司开始开发一种叫做C减减(C-minus-minus,简称Cmm)的嵌入式脚本语言。这个脚本语言捆绑在一个叫做CEnvi的共享软件产品中,当Netscape Navigator崭露头角时,Nombas开发了一个可以嵌入网页中的CEnvi的版本。这些早期的试验称为EspressoPage(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端脚本语言。而Nombas丝毫没有料到它的理念将会成为因特网的一块重要基石。
常见问题
* JavaScript是Java的变种吗
javascript代码JavaScript最初的确是受Java启发而开始设计的,而且设计的目的之一就是“看上去像Java”[2],因此语法上有很多类似之处,许多名称和命名规范也借自Java。但是实际上,JavaScript的主要设计原则源自Self和Scheme[3],它与Java本质上是不同的。它与Java名称上的近似,是当时网景为了营销考虑与Sun公司达成协议的结果。其实从本质上讲javascript更像是一门函数式编程语言.而非面向对象的语言,它使用一些智能的语法和语义来仿真高度复杂的行为。其对象模型极为灵活、开放和强大,具有全部的反射性。
* JavaScript与JScript相同吗?
为了取得技术优势,微软推出了JScript来迎战JavaScript的脚本语言。为了互用性,Ecma国际(前身为欧洲计算机制造商协会)建立了ECMA-262标准(ECMAScript)。现在两者都属于ECMAScript的实现。
* JavaScript是一门简单的语言吗?
尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的编程语言来推广和宣传,但是JavaScript是一门具有非常丰富特性的语言,它有着和其他编程语言一样的复杂性,或更甚复杂。实际上,你必需对JavaScript有扎实的理解才能用它来撰写比较复杂的程序。
基本概念
在这里只作简单介绍,在以后的例子中结程序再作具体解释其作用。
1、运算符
运算符就是完成操作的一系列符号,它有七类:
赋值运算符(=,+=,-=,*=,/=,%=,=,=,|=,=)、算术运算符(+,-,*,/,++,--,%)、比较运算符(,,=,=,==,===,!=,!==)、逻辑运算符(||,,!)、条件运算(?:)、位移运算符(|,,,,~,^)和字符串运算符(+)。
可能很多人不知道"==="什么。
在这里,我为大家解释一下,在javascript中 "==="才是全等 只有"==="两边的内存地址也相等 才会返回真
而"=="只是值相等就会返回真
例如:null==undefined 会返回真 , 但是null===undefined 就会返回假!
2、表达式
运算符和操作数的组合称为表达式,通常分为四类:赋值表达式、算术表达式、布尔表达式和字符串表达式。
3、语句
Javascript程序是由若干语句组成的,语句是编写程序的指令。Javascript提供了完整的基本编程语句,它们是:
赋值语句、switch选择语句、while循环语句、for循环语句、for each循环语句、do while循环语句、break循环中止语句、continue循环中断语句、with语句、try...catch语句、
if语句(if..else,if...else if ...)、let语句。
4、函数
函数是命名的语句段,这个语句段可以被当作一个整体来引用和执行。使用函数要注意以下几点:
1)函数由关键字function定义(也可由Function构造函数构造);
2)使用function关键字定义的函数在一个作用域内是可以在任意处调用的(包括定义函数的语句前);而用var关键字定义的必须定义后才能被调用;
3)函数名是调用函数时引用的名称,它对大小写是敏感的,调用函数时不可写错函数名;
4)参数表示传递给函数使用或操作的值,它可以是常量,也可以是变量,也可以是函数,在函数内部可以通过arguments对象(arguments对象是一个伪数组,属性callee引用被调用的函数)访问所有参数;
5)return语句用于返回表达式的值。
6)yield语句扔出一个表达式,并且中断函数执行直到下一次调用next。
一般的函数都是以下格式:
function myFunction(params){
//执行的语句
}
函数表达式:
var myFunction=function(params){
//执行的语句
}
var myFunction = function(){
//执行的语句
}
myFunction();//调用函数
匿名函数,它常作为参数在其他函数间传递:
window.addEventListener('load',function(){
//执行的语句
},false);
5、对象
Javascript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。
一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象。比如要设定网页的背景颜色,所针对的对象就是document,所用的属性名是bgcolor,如document.bgcolor="blue",就是表示使背景的颜色为蓝色。
6、事件
用户与网页交互时产生的操作,称为事件。事件可以由用户引发,也可能是页面发生改变,甚至还有你看不见的事件(如Ajax的交互进度改变)。绝大部分事都由用户的动作所引发,如:用户按鼠标的按钮,就产生click事件,若鼠标的指针的链接上移动,就产生mouseover事件等等。在Javascript中,事件往往与事件处理程序配套使用。
而对事件的处理,W3C的方法是用addEventListener()函数,它有三个参数:事件,引发的函数,是否使用事件捕捉。为了安全性,建议将第三个参数始终设置为false;
传统的方法就是定义元素的on...事件,它就是W3C的方法中的事件参数前加一个“on”。而IE的事件模型使用attachEvent和dettachEvent对事件进行绑定和删除。javascript中事件还分捕获和冒泡两个阶段,但是传统绑定只支持冒泡事件。
7、变量
如 var myVariable = "some value";
变量有它的类型,上例中myVariable的类型为string(字符串)
javascript支持的常用类型还有:
object:对象
array:数组
number:数;
boolean:布尔值,只有true和false两个值,是所有类型中占用内存最少的;
null:一个空值,唯一的值是null;
undefined:没有定义和赋值的变量
实际上javascript的变量是弱变量类型,你赋值给他的是字符串,他就是String .
是数字他就是整形。是true和false他就是boolean型(注意,不能加引号,不然会被当成字符串处理)。
特点
能够具有交互性,能够包含更多活跃的元素,就有必要在网页中嵌入其它的技术。如:Javascript、VBScript、Document Object Model(DOM,文档对象模型)、Layers和 Cascading Style Sheets(CSS,层叠样式表),这里主要讲Javascript。那么Javascript是什么东东?Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。 Javascript是由 Netscape公司开发的一种脚本语言(scripting language),或者称为描述语言。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。 运行用Javascript编写的程序需要能支持Javascript语言的浏览器。Netscape公司 Navigator 3.0以上版本的浏览器都能支持 Javascript程序,微软公司 Internet Explorer 3.0以上版本的浏览器基本上支持Javascript。微软公司还有自己开发的Javascript,称为JScript。 Javascript和Jscript基本上是相同的,只是在一些细节上有出入。 Javascript短小精悍, 又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。 同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。
JavaScript 使网页增加互动性。JavaScript 使有规律地重复的HTML文段简化,减少下载时间。JavaScript 能及时响应用户的操作,对提交表单做即时的检查,无需浪费时间交由 CGI 验证。JavaScript 的特点是无穷无尽的,只要你有创意。
开发工具
javascript程序是纯文本的,且不需要编译,所以任何纯文本的编辑器都可以编辑javascript文件。在Dreamweaver CS4中不仅有很好的代码高亮,还有较全的代码提示和错误提示,相比其他编辑器来说是十分强大的。
Visual Studio 2008 支持javascript调试,使程序开发起来更加方便。
让我来贴个偷懒的办法吧:
var a=[1,1,1,1,1];
alert((a.join(',')+',').replace(new RegExp(a[0]+',','gi'),'')=='');
var b=[1,1,1,2,3];
alert((b.join(',')+',').replace(new RegExp(b[0]+',','gi'),'')=='');
思路是将数组转换为字符串,然后将数组第一个元素+逗号替换为空字符串,如果替换结果是整个字符串变为空字符串,说明没有与第一个元素不同的值,这个办法比较取巧,只一行代码就够了.
如果还有问题欢迎追问,问题解决请及时选择满意回答,谢谢.
1、用法
都是用来比较值的。
2、比较过程
!= 比较时,若类型不同,会偿试转换类型;
!== 只有相同类型才会比较。
3、比较结果
!=返回同类型值比较结果 ;
!== 不同类型不比较,且无结果,同类型才比较;
4、举例
var num = 1; var str = '1'; var test = 1;
test !== num //false test与num类型相同,其值也相同,非运算肯定是false。
num != str //false == 的非运算。
num !== str //true num 与 str类型不同 意味着其两者不等,非运算自然是true啦。
扩展资料:
== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。
而=== 和 !== 只有在相同类型下,才会比较其值。
== equality 等同,=== identity 恒等。
==, 两边值类型不同的时候,要先进行类型转换,再比较。
===,不做类型转换,类型不同的一定不等。
“=”:这个表示赋值,不是表示运算符
“==”:表示等于(值)
“===”:表示全等于(类型和值)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流