新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
js中value^= 是按位异或赋值运算符,右面的值异或VALUE 然后赋值给VALUE。
目前创新互联已为上千余家的企业提供了网站建设、域名、网页空间、网站托管、服务器租用、企业网站设计、洞口网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
^是异或运算符,异或的规则是转换成二进制比较,相同为0,不同为1.
一个数a与另一个数b异或的结果等于a^b,用结果( a^b)异或a,就会得到b;
上面的结果用代码来验证。代码( a=a^b; b=a^b; a=a^b;)可以转换成这样。
int c=a^b ; ------------ 01=10^11 得到结果C( a^b)
b=c^b; ------------ 10=01^11 用结果( a^b)异或a,就会得到b;
a=c^a; -------------11=01^10 用结果( a^b)异或b,就会得到a;
扩展资料
JavaScript脚本语言特点
(1)脚本语言。JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。
(2)基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
(3)简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。
(4)动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。
(5)跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支 持JavaScript脚本语言,目前JavaScript已被大多数的浏览器所支持。
参考资料来源:百度百科—javascript
javascript 中的?是属性。例如:var text={ x:1,y:2 } , 输出:text.x 那么值就是1 如此而已。
javascript的相关概念:
语句
JavaScript程序是由若干语句组成的,语句是编写程序的指令。JavaScript提供了完整的基本编程语句,它们是:
赋值语句、switch选择语句、while循环语句、for循环语句、for each循环语句、do...while循环语句、break循环中止语句、continue循环中断语句、with语句、try…catch语句、if语句(if..else,if…else if…)。
函数
函数是命名的语句段,这个语句段可以被当作一个整体来引用和执行。使用函数要注意以下几点:
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);
对象
JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。
一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象。比如要设定网页的背景颜色,所针对的对象就是document,所用的属性名是bgcolor,如document.bgcolor="blue",就是表示使背景的颜色为蓝色。
事件
用户与网页交互时产生的操作,称为事件。事件可以由用户引发,也可能是页面发生改变,甚至还有你看不见的事件(如Ajax的交互进度改变)。绝大部分事件都由用户的动作所引发,如:用户按鼠标的按键,就产生click事件,若鼠标的指针在链接上移动,就产生mouseover事件等等。在JavaScript中,事件往往与事件处理程序配套使用。
而对事件的处理,W3C的方法是用addEventListener()函数,它有三个参数:事件,引发的函数,是否使用事件捕捉。为了安全性,建议将第三个参数始终设置为false
传统的方法就是定义元素的on…事件,它就是W3C的方法中的事件参数前加一个“on”。而IE的事件模型使用attachEvent和dettachEvent对事件进行绑定和删除。JavaScript中事件还分捕获和冒泡两个阶段,但是传统绑定只支持冒泡事件。
变量
1、常用类型
Object:对象
Array:数组
Number:数
Boolean:布尔值,只有true和false两个值,是所有类型中占用内存最少的
null:一个空值,唯一的值是null,表空引用
undefined:没有定义或赋值的变量
2、命名形式
一般形式是:
var 变量名表;
其中,var是javascript的保留字,表面接下来是变量说明,变量名表是用户自定义标识符,变量之间用逗号分开。和C++等程序不同,在javascript中,变量说明不需要给出变量的数据类型。此外,变量也可以不说明而直接使用。
3、作用域
变量的作用域由声明变量的位置决定,决定哪些脚本命令可访问该变量。在函数外部声明的变量称为全局变量,其值能被所在HTML文件中的任何脚本命令访问和修改。在函数内部声明的变量称为局部变量。只有当函数被执行时,变量被分配临时空间,函数结束后,变量所占据的空间被释放。局部变量只能被函数内部的语句访问,只对该函数是可见的,而在函数外部是不可见的。
运算符
javascript提供了丰富的运算功能,包括算术运算、关系运算、逻辑运算和连接运算。
1.算术运算符
javascript中的算术运算符有单目运算符和双目运算符。双目运算符包括:+(加)、-(减)、*(乘)、/(除)、%(取模)、|(按位或)、(按位与)、(左移)、(右移)等。单目运算符有:-(取反)、~(取补)、++(递加1)--(递减1)等。
2.关系运算符
关系运算符又称比较运算,运算符包括:(小于)、=(小于等于)、(大于)、=(大于等于)、==(等于)和!=(不等于)以及 ===) 和 !==。
关系运算的运算结果为布尔值,如果条件成立,则结果为true,否则为false。
3.逻辑运算符
逻辑运算符有:(逻辑与)、||(逻辑或)、!(取反,逻辑非)、^(逻辑异或)。
4.字符串连接运算符
连接运算用于字符串操作,运算符为+(用于强制连接),将两个或多个字符串连结为一个字符串。
5.三目操作符?
三目操作符“?:”格式为:
操作数?表式1:表达式2
三目操作符“?:”构成的表达式,其逻辑功能为:若操作数的结果为true,则表述式的结果为表达式1,否则为表达式2。例如max=(ab)?a:b;该语句的功能就是将a,b中的较大的数赋给max。
相关规则
在JavaScript中,“==="是全同运算符,只有当值相等,数据类型也相等时才成立。
等同运算符“=="的比较规则:
当两个运算数的类型不同时:将他们转换成相同的类型。
1)一个数字与一个字符串,字符串转换成数字之后,进行比较。
2)true转换为1、false转换为0,进行比较。
3)一个对象、数组、函数与 一个数字或字符串,对象、数组、函数转换为原始类型的值,然后进行比较。(先使用valueOf,如果不行就使用toString)
4)其他类型的组合不相等。
JavaScript想两个运算数类型相同,或转换成相同类型后:
1)2个字符串:同一位置上的字符相等,2个字符串就相同。
2)2个数字:2个数字相同,就相同。如果一个是NaN,或两个都是NaN,则不相同。
3)2个都是true,或者2个都是false,则相同。
4)2个引用的是同一个对象、函数、数组,则他们相等,如果引用的不是同一个对象、函数、数组,则不相同,即使这2个对象、函数、数组可以转换成完全相等的原始值。
5)2个null,或者2个都是未定义的,那么他们相等。
而“===”是全同运算符,全同运算符遵循等同运算符的比较规则,但是它不对运算数进行类型转换,当两个运算数的类型不同时,返回false;只有当两个运算数的类型相同的时候,才遵循等同运算符的比较规则进行比较。
例如:null==undefined 会返回真, 但是null===undefined 就会返回假!
表达式
表达式是指将常量、变量、函数、运算符和括号连接而成的式子。根据运算结果的不同,表达式可分为算术表达式、字符表达式、和逻辑表达式。
脚本语言
不同于服务器端脚本语言,例如PHP与ASP,JavaScript是客户端脚本语言,也就是说JavaScript是在用户的浏览器上运行,不需要服务器的支持而可以独立运行。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。
JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。解释语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而且由于每次重新加载都会重新解译,加载后,有些代码会延迟至运行时才解译,甚至会多次解译,所以速度较慢。
与其相对应的是编译语言,例如Java。Java的源代码在传递到客户端运行之前,必须经过编译,因而客户端上必须具有相应平台上的仿真器或解释器,它可以通过编译器或解释器实现独立于某个特定的平台编译代码的束缚。但是它必须在服务器端进行编译,这样就拖延了时间。但因为已经封装,所以能保证安全性。
Javascript库
库,指得是可以方便应用到现有开发体系中的、现成的代码资源。库不仅为大部分日常的DOM脚本编程工作提供了快捷的解决方案,而且也提供了许多独特的工具。虽然库使用起来很方便,但它们也并非能解决你所有的问题。在使用库之前,一定要保证真正理解javascript的DOM原理。
这些库一般是一个(或多个)js(Javascript的缩写)文件,只要把他们导入你的网页就能使用了。
常用的库有:
jQuery:javascript库中的新成员,提供css和xpath选择符查找元素、ajax、动画效果等
JSer: 国人开发的一款全功能的开源脚本框架. 借助JSer,可以便捷的操作DOM、CSS样式访问、属性读写、事件绑定、行为切换、动态载入、数据缓存、URL与AJAX等众多功能。
dojo:一个巨大的库,包括的东西很多,dijit和dojox是dojo的扩展,几乎你想要的各种javascript程序都包括了。
prototype:一个非常流行的库,使用了原型链向javascript中添加了很多不错的函数
YUI:(YahooYUI库)yahoo!用户界面,非常实用,提供各种解决方案。
ExtJs:组件非常丰富,皮肤也很漂亮,动画效果也丰富。
语句
JavaScript程序是由若干语句组成的,语句是编写程序的指令。JavaScript提供了完整的基本编程语句,它们是:
赋值语句、switch选择语句、while循环语句、for循环语句、for each循环语句、do...while循环语句、break循环中止语句、continue循环中断语句、with语句、try…catch语句、if语句(if..else,if…else if…)。
函数
函数是命名的语句段,这个语句段可以被当作一个整体来引用和执行。使用函数要注意以下几点:
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);
对象
JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。
一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象。比如要设定网页的背景颜色,所针对的对象就是document,所用的属性名是bgcolor,如document.bgcolor="blue",就是表示使背景的颜色为蓝色。
事件
用户与网页交互时产生的操作,称为事件。事件可以由用户引发,也可能是页面发生改变,甚至还有你看不见的事件(如Ajax的交互进度改变)。绝大部分事件都由用户的动作所引发,如:用户按鼠标的按键,就产生click事件,若鼠标的指针在链接上移动,就产生mouseover事件等等。在JavaScript中,事件往往与事件处理程序配套使用。
而对事件的处理,W3C的方法是用addEventListener()函数,它有三个参数:事件,引发的函数,是否使用事件捕捉。为了安全性,建议将第三个参数始终设置为false
传统的方法就是定义元素的on…事件,它就是W3C的方法中的事件参数前加一个“on”。而IE的事件模型使用attachEvent和dettachEvent对事件进行绑定和删除。JavaScript中事件还分捕获和冒泡两个阶段,但是传统绑定只支持冒泡事件。
变量
1、常用类型
Object:对象
Array:数组
Number:数
Boolean:布尔值,只有true和false两个值,是所有类型中占用内存最少的
null:一个空值,唯一的值是null,表空引用
undefined:没有定义或赋值的变量
2、命名形式
一般形式是:
var 变量名表;
其中,var是javascript的保留字,表面接下来是变量说明,变量名表是用户自定义标识符,变量之间用逗号分开。和C++等程序不同,在javascript中,变量说明不需要给出变量的数据类型。此外,变量也可以不说明而直接使用。
3、作用域
变量的作用域由声明变量的位置决定,决定哪些脚本命令可访问该变量。在函数外部声明的变量称为全局变量,其值能被所在HTML文件中的任何脚本命令访问和修改。在函数内部声明的变量称为局部变量。只有当函数被执行时,变量被分配临时空间,函数结束后,变量所占据的空间被释放。局部变量只能被函数内部的语句访问,只对该函数是可见的,而在函数外部是不可见的。
运算符
javascript提供了丰富的运算功能,包括算术运算、关系运算、逻辑运算和连接运算。
1.算术运算符
javascript中的算术运算符有单目运算符和双目运算符。双目运算符包括:+(加)、-(减)、*(乘)、/(除)、%(取模)、|(按位或)、(按位与)、(左移)、(右移)等。单目运算符有:-(取反)、~(取补)、++(递加1)--(递减1)等。
2.关系运算符
关系运算符又称比较运算,运算符包括:(小于)、=(小于等于)、(大于)、=(大于等于)、==(等于)和!=(不等于)以及 ===) 和 !==。
关系运算的运算结果为布尔值,如果条件成立,则结果为true,否则为false。
3.逻辑运算符
逻辑运算符有:(逻辑与)、||(逻辑或)、!(取反,逻辑非)、^(逻辑异或)。
4.字符串连接运算符
连接运算用于字符串操作,运算符为+(用于强制连接),将两个或多个字符串连结为一个字符串。
5.三目操作符?
三目操作符“?:”格式为:
操作数?表式1:表达式2
三目操作符“?:”构成的表达式,其逻辑功能为:若操作数的结果为true,则表述式的结果为表达式1,否则为表达式2。例如max=(ab)?a:b;该语句的功能就是将a,b中的较大的数赋给max。
相关规则
在JavaScript中,“==="是全同运算符,只有当值相等,数据类型也相等时才成立。
等同运算符“=="的比较规则:
当两个运算数的类型不同时:将他们转换成相同的类型。
1)一个数字与一个字符串,字符串转换成数字之后,进行比较。
2)true转换为1、false转换为0,进行比较。
3)一个对象、数组、函数与 一个数字或字符串,对象、数组、函数转换为原始类型的值,然后进行比较。(先使用valueOf,如果不行就使用toString)
4)其他类型的组合不相等。
JavaScript想两个运算数类型相同,或转换成相同类型后:
1)2个字符串:同一位置上的字符相等,2个字符串就相同。
2)2个数字:2个数字相同,就相同。如果一个是NaN,或两个都是NaN,则不相同。
3)2个都是true,或者2个都是false,则相同。
4)2个引用的是同一个对象、函数、数组,则他们相等,如果引用的不是同一个对象、函数、数组,则不相同,即使这2个对象、函数、数组可以转换成完全相等的原始值。
5)2个null,或者2个都是未定义的,那么他们相等。
而“===”是全同运算符,全同运算符遵循等同运算符的比较规则,但是它不对运算数进行类型转换,当两个运算数的类型不同时,返回false;只有当两个运算数的类型相同的时候,才遵循等同运算符的比较规则进行比较。
例如:null==undefined 会返回真, 但是null===undefined 就会返回假!
表达式
表达式是指将常量、变量、函数、运算符和括号连接而成的式子。根据运算结果的不同,表达式可分为算术表达式、字符表达式、和逻辑表达式。
脚本语言
不同于服务器端脚本语言,例如PHP与ASP,JavaScript是客户端脚本语言,也就是说JavaScript是在用户的浏览器上运行,不需要服务器的支持而可以独立运行。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。
JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。解释语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而且由于每次重新加载都会重新解译,加载后,有些代码会延迟至运行时才解译,甚至会多次解译,所以速度较慢。
与其相对应的是编译语言,例如Java。Java的源代码在传递到客户端运行之前,必须经过编译,因而客户端上必须具有相应平台上的仿真器或解释器,它可以通过编译器或解释器实现独立于某个特定的平台编译代码的束缚。但是它必须在服务器端进行编译,这样就拖延了时间。但因为已经封装,所以能保证安全性。
Javascript库
库,指得是可以方便应用到现有开发体系中的、现成的代码资源。库不仅为大部分日常的DOM脚本编程工作提供了快捷的解决方案,而且也提供了许多独特的工具。虽然库使用起来很方便,但它们也并非能解决你所有的问题。在使用库之前,一定要保证真正理解javascript的DOM原理。
这些库一般是一个(或多个)js(Javascript的缩写)文件,只要把他们导入你的网页就能使用了。
常用的库有:
jQuery:javascript库中的新成员,提供css和xpath选择符查找元素、ajax、动画效果等
JSer: 国人开发的一款全功能的开源脚本框架. 借助JSer,可以便捷的操作DOM、CSS样式访问、属性读写、事件绑定、行为切换、动态载入、数据缓存、URL与AJAX等众多功能。
dojo:一个巨大的库,包括的东西很多,dijit和dojox是dojo的扩展,几乎你想要的各种javascript程序都包括了。
prototype:一个非常流行的库,使用了原型链向javascript中添加了很多不错的函数
YUI:(YahooYUI库)yahoo!用户界面,非常实用,提供各种解决方案。
ExtJs:组件非常丰富,皮肤也很漂亮,动画效果也丰富。
正则表达式
'/^'表示匹配输入字符串的开始位置。
“+[a-zA-Z0-9\-\_]{2,4}$/”表示匹配前面的子表达式
2
到4
次
含有第一字符为字符a到z
数字0到9
符号
“-”
和“
_”
,并且这个匹配在字符串的最后位置
。
我来逐行代码给你分析吧,至于转成易语言的话就无能为力了。
因为本人不会易语言,所以你再找个会易语言的人根据我的翻译在写出易语言的代码来吧。
/*
*这一行是定义一个函数,函数名称是xor_str
*该函数接受两个参数,第一个参数名称是cipherurl,第二个是cipherkey
*由于js是弱类型语言,因此没有参数类型的限制。
*但是根据代码的意思可以得到这两个参数的类型都是字符串类型
*因此,在易语言下你可先定义一个方法,该方法接受两个字符串类型的参数
*/
var xor_str = function(cipherurl,cipherkey)
{
/*
*定义两个局部变量
*第一个变量名为i,类型是整数类型,初始值为0
*第二个变量名为url,类型是字符串类型,初始值为""
*/
var i = 0, url = '',
/*
*定义了一个全局变量keylen,初始值为第二个参数的长度
*因为第二个参数为字符串类型,所以这个变量的初始值就是这个字符串的长度
*/
keylen = cipherkey.length,
/*
*这里又定义了一个全局变量,变量名为urllen,初始值为第一个参数的长度
*因为第一个参数为字符串类型,所以这个变量的初始值就是这个字符串的长度
*/
urllen = cipherurl.length;
/*
*开始循环,循环条件为变量i小于变量urllen,每循环一次i的值加1
*/
for(;i urllen;i++){
/*
*定义一个变量ch
*cipherurl.charCodeAt(i) 的意思是取得cipherurl变量内第i个字符的编码
*cipherkey.charCodeAt(i%keylen)的意思是取得第(i除以keylen的余数)个字符的编码
*cipherurl.charCodeAt(i) ^ cipherkey.charCodeAt(i%keylen)的意思是
*把第一个编码值和第二个编码值按二进制位进行异或运算
*即对两个数值的二进制写法进行比较
*只有当相同位置上的数字只有一个1时,才返回1,
*有两个1或者都是0则返回0,
*然后转换成十进制数值
*如:10001(二进制) ^ 01111(二进制)得到的二进制值为11110
*最终转成十进制是30
*/
var ch = cipherurl.charCodeAt(i) ^ cipherkey.charCodeAt(i%keylen);
/*
*String.fromCharCode(ch);意思是取得ch编码所在的字符
*url += String.fromCharCode(ch);意思是吧ch对应的字符累加到url变量上
*/
url += String.fromCharCode(ch);
} //结束循环
//返回url的值
return url;
};
我想我应该说的够清楚了,如果还帮不了你的话我没办法了。
有回答正则的,那确实也是正则元字符一种,正则虽然在不同语言中使用不同,不过那个符号在正则里面代表的意思都一样,和语言扯不上关系。
^为异或 就好比 | 和 在逻辑运算符里理解为“或者”和“并且” 但是他们也可以充当二进制算法,比如 6 二进制为110 , 8二进制为 1000
那么如下关系
0110 三位,不够前面加0
1000
计算机中只有二进制0和1 ,你可以理解0就是true,1就是false,然后通过逻辑运算的概念执行得到就是新的结果,异或的算法为相同输出0,不同输出1,
意思是当鼠标指向控件时该控件获得焦点,而获得焦点时使控件中的文本被选中。
===表示类型什么的全部相等,!==表示要全部不想等包括类型或者的意思
!!一般用来将后面的表达式转换为布尔型的数据(boolean),因为javascript是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型
类似的如: a=parseInt("1234") a="1234"+0 //转换为数字 b=1234+"" //转换为字符串 c=someObject.toString() //将对象转换为字符串 其中第1种、第4种为显式转换,2、3为隐式转换 布尔型的转换,javascript约定和c类似,规则为 ·false、undefinded、null、0、"" 为 false ·true、1、"somestring"、[Object] 为 true
"0x" 指明是十六进制("hex") ,^ 是按位异或, 是按位与, | 是按位或,这些都是位运算符,可以使用windows中的计算器来计算,把计算器设置成“科学型”,使用“十六进制”输入fffffff,“Xor”是^,“And”是,“Or”是|,结果是103,也可以写成一个htm文件用IE看一下结果
onmouseover 当用户将鼠标指针移动到对象内时触发,onfocus 当对象获得焦点时触发,this 指当前对象(标签内) ,focus() 返回指定的控件,select() 返回指定的控件(全选内容,如文本框内的内容)
分号可用也可不用
onmouseover="this.focus()" 或 onmouseover="this.focus();" 结果是一样,onfocus="this.select();" 或 onfocus="select();" 结果是一样的