js的高级知识 —— 词法分析

JavaScript020

js的高级知识 —— 词法分析,第1张

js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤:

函数在运行的瞬间,生成一个活动对象(Active Object),简称AO

1.分析参数

2.分析变量声明:如var age或var age=23

3.分析函数的声明,如果有function name(){}把函数赋给AO.name ,覆盖上一步分析的值

例子1:

词法分析阶段:

例子2:

词法分析阶段:

a和b在词法分析时,区别:

词法作用域

所谓词法作用域是说,其作用域为在定义时(词法分析时)就确定下来的,而并非在执行时确定。白话就是在函数未执行前,函数执行的顺序已经被确定,而不是类似JAVA一样,是在执行前根本不知道执行顺序。

楼主,我发觉你这代码问题太多了。你看:var p=""var x=document.password.pass.valueif (x==p) {

window.open(p+".html")——问题出在,这里p="",即便从表单中取值取到了x="",成立,也不可能打开你要的页面啊,这里绝对出错啊,因为找不到这么一个页面。因为p+".html"得出来的是一个字符串,p+".html"=“.html”,只有一个后缀名,并没有页面的名称,你怎么打开这个页面?结果1:什么都不输入,直接提交,绝对会报你找不到这个页面的错误。结果2:输入一个空格或者其他内容,就会弹出“恭喜您,答错了,看来你的JS还得加强哦 ”这句话

}else{

alert("恭喜您,答错了,看来你的JS还得加强哦 !")

}解答如上:再强调下x=p后跳转到哪吧。如果你的代码写成这样:function PassConfirm() {

var p="myname"——给p一个值

var x=document.all.name.value

if (x==p) {

window.open(p+".html")

}else{

alert("恭喜您,答错了,看来你的JS还得加强哦 !")

}

}在文本框中输入myname后,提交,此时x被赋值x=myname,既然p=myname,x=myname,条件成立(x==p),进入window.open(p+".html")这行代码,打开的页面就叫myname.html(注:p="myname",p+".html"="myname"+"html",这叫连接字符串,连起来就=myname.html了)了。楼主要记住一点,这里是打开一个新页面,并不是跳转到另一个页面。

比较两个Input里面的值 a的不能小于b的值 form在提交的时候先去执行一个check的操作,只有在a的值小于b的值的情况下,不提交而且探出一个对话框说明a小于b这样子。光标停留在a的文本框上,比较不出来的情况下 什么也不做。 页面初始化的时候a的文本框是ddddd显示,b的文本框是空白显示,如果鼠标点击a的文本框的话,会清空a里面的内容。