js变量赋值 定义了一个全局变量 var cardFlag = false;但是我在方法里使用 cardFlag 的时候值取到的是undefined,求大神指导 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的this指向错误 全局变量这样定义:window.cardFlag = false; js有预解析的机制,没有看到代码,个人猜测,有可能是你的顺序写错了,导致取值为undefined var payDate = "1";var CardFlag = false;function init(){ if(cardFlag) { chooseCard();}}一开始是执行init()方法,我在init()方法里面取payDate 和cardFlag,payDate值是"1",但是cardFlag值是undefined var payDate = "1";var CardFlag = false; //这里是首字母大写function init(){ if(cardFlag) { //这里首字母小写。。 chooseCard();}}这么粗心,不行的 var payDate = "1";var cardFlag = false;function init(){ console.log(cardFlag) if(cardFlag) { chooseCard(); }}init() 我这里打印出来没问题啊 不是Undefied啊 函数在变量初始化前就被调用了,可以在函数的开头打印一把看看cardFlag是什么。 js作用域链变量访问规则: (1)、当前作用域内存在要访问的变量时,则使用当前作用域中的变量。 (2)、当前作用域中不存在要访问的变量时,则会到上一层作用域中寻找,直到全局作用域。 >>>执行顺序 js代码执行分为两个部分: 1、代码的检查装载阶段(预编译阶段),此阶段进行变量和函数的声明,但是不对变量进行赋值,变量的默认值为undefined。 2、代码的执行阶段,此阶段对变量进行赋值和函数的声明。var a=1; //声明了一个全局变量function func(){ console.log(a); //输出:undefined。打印a,而在func这个作用域中已经声明了a变量,按照js的执行顺序,此时的a并未被赋值。 var a=1; console.log(a); //输出:1。}func();看上面的代码:第一个a输出undefined。原因:js作用域链的访问规则,当前作用域内存在要访问的变量a,所以使用当前作用域中的变量。再根据js代码的执行顺序,此时的a只是声明了而并未被赋值,默认为undefined,所以输出undefined。 而第二个a,输出1,正是因为此时的a已经被声明且被赋值,所以a输出1。 我理解你的说法,是有两个变量重名,一个为全局变量,另一个为局部变量,切局部变量在代码加载时未定义才会出现undefined的情况,不知道我的理解对不对。我的代码里面变量名称是唯一的,没有出现重名的变量名,而且我同时赋值了很多,但是只有两个变量的值是undefined,剩下的值都拿到了 自己做的一个跟随滚动的代码,求拍砖! JS中的match 不知道是那里的问题 javascript和jquery有什么区别? 拖拽在firefox无效 动态删除列出现的奇怪的问题,大家看看 EXTJS4的grid加载图片问题 $("#div").html()如何显示一个集合? 我想得到当前焦点所在的控件,能够实现吗? 各位帮忙看看 求哪位大神能够给出完整代码,(一个基本不会前端的后端开发的哀求) echarts 取地图上值排在前三的区域,最大值给红色,第二大的值给黄色,第三个值给绿色,请问哪位大神有例子,或者懂写的给个deom
var payDate = "1";
var CardFlag = false;
function init(){
if(cardFlag) {
chooseCard();
}
}
一开始是执行init()方法,我在init()方法里面取payDate 和cardFlag,payDate值是"1",但是cardFlag值是undefined
var payDate = "1";
var CardFlag = false; //这里是首字母大写
function init(){
if(cardFlag) { //这里首字母小写。。
chooseCard();
}
}
这么粗心,不行的
var cardFlag = false;
function init(){
console.log(cardFlag)
if(cardFlag) {
chooseCard();
}
}
init()
我这里打印出来没问题啊 不是Undefied啊
var a=1; //声明了一个全局变量
function func(){
console.log(a); //输出:undefined。打印a,而在func这个作用域中已经声明了a变量,按照js的执行顺序,此时的a并未被赋值。
var a=1;
console.log(a); //输出:1。
}
func();
看上面的代码:第一个a输出undefined。原因:js作用域链的访问规则,当前作用域内存在要访问的变量a,所以使用当前作用域中的变量。再根据js代码的执行顺序,此时的a只是声明了而并未被赋值,默认为undefined,所以输出undefined。 而第二个a,输出1,正是因为此时的a已经被声明且被赋值,所以a输出1。