ccc v1.10.2 【已解决】关于if内的b赋值被当做数组元素提交时,提示赋值b is not defined是bug还是语法如此?

  • Creator 版本:1.10.2

  • 目标平台: 模拟器

  • 详细报错信息,包含调用堆栈:

Simulator: libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
E/jswrapper (268): ERROR: Uncaught ReferenceError: b is not defined, location: assets/scripts/yingkePanel.js:0:0
STACK:
[0]shaixuan@assets/scripts/yingkePanel.js:245
[1]onButtonClick@assets/scripts/yingkePanel.js:130
[2]emit@src/jsb_polyfill.js:5792
[3]emitEvents@src/jsb_polyfill.js:5777
[4]_onTouchEnded@src/jsb_polyfill.js:5361
[5]78.EventListeners.invoke@src/jsb_polyfill.js:10850
[6]_doDispatchEvent@src/jsb_polyfill.js:10896
[7]79.proto.dispatchEvent@src/jsb_polyfill.js:11013
[8]_touchEndHandler@src/jsb_polyfill.js:2001
E/jswrapper (520): [ERROR] (…\jswrapper\v8\Object.cpp, 520): Invoking function (0747E930) failed!
at HTMLElement.print-simulator-log (E:\programs\CocosCreator\resources\app.asar\editor\builtin\scene\panel\messages\scene.js:1:1562)
at Object.Panel._dispatch (E:\programs\CocosCreator\resources\app.asar\editor-framework\lib\renderer\panel.js:1:2283)
at EventEmitter.ipcRenderer.on.o (E:\programs\CocosCreator\resources\app.asar\editor-framework\lib\renderer\ipc.js:1:4070)
at emitMany (events.js:127:13)
at EventEmitter.emit (events.js:204:7)
Simulator: jsb: ERROR: File …\manual\jsb_cocos2dx_manual.cpp: Line: 487, Function: invokeJSTouchOneByOneCallback
Simulator: invokeJSTouchOneByOneCallback call function failed!

  • 重现方式:100%

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:100%

  • 额外线索:我是设置了一个按钮,点击后执行shaixuan()方法,就会报错,全代码如下:


shaixuan(t){
	let basev = 10;
	let badd = 65;
	
	let a = parseInt(basev + badd%5);

	/*let b=0;
	let c=0;
	let d=0;
	let e=0;*/

	if(this.suijishu(1,100)< (100 + global.ykkhlv/3)){
		let b = parseInt(basev + badd%4);
	}else{
		let b = 0;
	}
	if(this.suijishu(1,100)< (100 + global.ykkhlv/2)){
		let c = parseInt(basev + badd%3);
	}else{
		let c = 0;
	}
	if(this.suijishu(1,100)< (100 + global.ykkhlv)){
		let d = parseInt(basev + badd%2);
	}else{
		let d = 0;
	}
	if(this.suijishu(1,100)< (100 + global.ykkhlv)){
		let e = parseInt(basev + badd%7);
	}else{
		let e = 0;
	}
		
	return [a,b,c,d,e];     //<<=====报错提示行
},

好好学下 js, b只在 { } 里定义了,外边是没有的

谢谢回复,我自己测试过了,事先let b=0;然后在 {}里面直接赋值b=2;这样就行了,感觉稍微有点奇怪,可能是以前学lua留下的误区吧。请问 这个错误算是 作用域 的问题吗?

:relaxed:是啊,去找找严格模式的文档看看